js中常见面试问题-笔记】的更多相关文章

原文参考https://mp.weixin.qq.com/s/mCVL6qI33XeTg4YGIKt-JQ 1.事件代理给父元素添加事件,利用事件冒泡原理,在根据e.target来获取子元素<ul id="parentBox"> <li class="item">1</li> <li class="item">2</li> <li class="item">…
js中常见的问题 原文链接 1.js获取select标签选中的值 原生js var obj = document.getElementByIdx_x(”testSelect”); //定位id var index = obj.selectedIndex; // 选中索引 var text = obj.options[index].text; // 选中文本 var value = obj.options[index].value; // 选中值 jQuery 第一种方式 $(‘#testSele…
JS中常见算法问题 1. 阐述JS中的变量提升(声明提前) 答:将所有的变量提升当当前作用域的顶部,赋值留在原地.意味着我们可以在某个变量声明前就使用该变量. 虽然JS会进行变量提升,但并不会执行真正的初始化过程. 按值传递:两变量间赋值,或向函数中传递参数时,都是将原变量中的值复制一个副本给对方,修改一方,另一方不受影响. 引用类型的对象之间相互赋值时,只是将地址赋值给了对方,因此改变原对象中的内容,由于地址并未发生改变,因此也会引发新变量内容的改变. 2.阐述use strict;的作用 答…
1.SyntaxError(语法错误) 解析代码时发生的语法错误 var 1a; //Uncaught SyntaxError: Invalid or unexpected token 变量名错误 console.log 'hello'); //Uncaught SyntaxError: Unexpected string 缺少括号 2.ReferenceError(引用错误) console.log(a); //Uncaught ReferenceError: a is not defined…
js中常见的错误,例如Uncaught TypeError: x is not a function 其原因除了函数本身有错之外,还有一种很奇怪的情况:函数本身没有错,但是运行时就是不能正常运行.这种情况与javascript的特性有关:变量与函数声明前置的优先级. 总结: js有声明前置,函数和变量的声明都会前置,即会在整个js代码的最开始,不管声明部分在什么位置. js中函数的声明优先于同名变量的声明,不管先后顺序如何. 函数的声明会在整段js代码的最前面,不管function() 函数在j…
github: https://github.com/14glwu/FEInterviewBox/tree/master/JS%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F JavaScript 中常见设计模式 单例模式 策略模式 代理模式 迭代器模式 发布订阅模式 命令模式 组合模式 模板方法模式 享元模式 职责链模式 中介者模式 装饰者模式 状态模式 适配器模式 各设计模式关键词 看完了上述设计模式后,把它们的关键词特点罗列出来,以后提到某种设计模式,进而联想相应的…
加密在我们前端的开发中也是经常遇见的.本文只把我们常用的加密方法进行总结.不去纠结加密的具体实现方式(密码学,太庞大了). 常见的加密方式 常见的加密算法基本分为这几类, 线性散列算法(签名算法)MD5 SHA1 对称性加密算法 AES DES 非对称性加密算法 RSA Md5加密 MD5是一种被广泛使用的线性散列算法,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致. MD5加密之后产生的是一个固定长度(32位或16位)的数据 MD5是可以进行反向暴…
常见的内存泄漏场景 内存泄漏Memory Leak是指程序中已动态分配的堆内存由于疏忽或错误等原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果.内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费.对于内存泄露的检测,Chrome提供了性能分析工具Performance,可以比较方便的查看内存的占用情况等. 内存回收机制 像C语言这样的底层语言一般都有底层的内存管理…
1.原型链继承 // 1.原型链继承 /* 缺点:所有属性被共享,而且不能传递参数 */ function Person(name,age){ this.name = name this.age = age } Person.prototype.sayName = () =>{ console.log(this.name) } function Man(name){ } Man.prototype = new Person() Man.prototype.name = 'zhangsan' va…
1.框架和库的区别: 框架:framework 有着自己的语法特点.都有对应的各个模块库 library 专注于一点 框架的好处: 1.提到代码的质量,开发速度 2.提高代码的复用率 3.降低模块之间的耦合度 (高内聚低耦合) UI:user interfaceGUI : graphical user interfaceCLI : command line interfaceAPI : application interface 思维模式的转换: 从操作DOM的思维模式 切换到 以数据为主 2.…
前两天好好的把高程对象那一块又读了下,顺便写点笔记.补一句:代码都测试过了,应该没有问题的.可以直接拿到控制台跑! 1.工厂模式 function person(name, age, job) { var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function() { alert(this.name); } return o; } var person1 = person('Nicholas'…
原文链接 1.js获取select标签选中的值 原生js var obj = document.getElementByIdx_x(”testSelect”); //定位id var index = obj.selectedIndex; // 选中索引 var text = obj.options[index].text; // 选中文本 var value = obj.options[index].value; // 选中值 jQuery 第一种方式 $(‘#testSelect option…
本文将详细介绍在JavaScript中算法的用法,配合动图生动形象的让你以最快的方法学习算法的原理以及在需求场景中的用途. 有句话怎么说来着: 雷锋推倒雷峰塔,Java implements JavaScript. 当年,想凭借抱Java大腿火一把而不惜把自己名字给改了的JavaScript(原名LiveScript),如今早已光芒万丈.node JS的出现更是让JavaScript可以前后端通吃.虽然Java依然制霸企业级软件开发领域(C/C + +的大神们不要打我...),但在Web的江湖,…
reverse( )  数组逆序   // reverse() 数组逆序 var arr = ["边境牧羊犬", "德国牧羊犬", "金毛", "贵宾犬", "柯基犬"]; arr.reverse(); alert(arr); //柯基犬,贵宾犬,金毛,德国牧羊犬,边境牧羊犬   reverse 直接修改原数组.    …
摘自:https://blog.csdn.net/hj7jay/article/details/53389522 几种对象 Node Node是一个接口,中文叫节点,很多类型的DOM元素都是继承于它,都共享着相同的基本属性和方法.常见的Node有 element,text,attribute,comment,document 等(所以要注意 节点 和 元素 的区别,元素属于节点的一种). Node有一个属性 nodeType 表示Node的类型,它是一个整数,其数值分别表示相应的Node类型,具…
一.面试80%都要问的数组去重 数组去重的方式有多种,其实面试中主要是想靠对对象的理解.还记得我第一次去面试的时候,去重的时候用了2个for循环. //1循环一次 var arr1 = [1,2,3,44,44,11,2,3,333,3,3]; function removeRepeat(arr){ var removeArr = [],obj = {}; for(var i = 0, l = arr.length; i < l; i++){ if(!obj[arr[i]]){ removeAr…
1.Idea基础设置: File-->settings--> 1>修改字体:Font 2>修改编码格式:File Encodings(全部UTF-8,右下方复选框勾中--防止程序中的汉字转为ASCII码) 3>修改行号:Appearance:show line numbers show method separators(方法与方法间的分隔符) 4>格式化代码:code style --> java (全部改成2) 5>代码提示:Editor -->…
背景和目的 接口测试过程中难免会遇到由于有转义符号正则表达式提取不出来的情况,根据小伙伴们的分享和参考自己实践总结了多种情况 参考 首先,感谢如下常见转义字符,感谢提供参考的小伙伴  参考:https://blog.csdn.net/ththcc/article/details/78165774 $          匹配输入字符串的结尾位置.如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n' 或 ‘\r'.要匹配 $ 字符本身,请使用 \$. ( )    …
首先要明晰一点,json标准中,key是必须要带引号的,所以标准json模块解析不带引号的key的 json就会抛错 不过有一些lib可以帮我们解析 如:demjson(链接) >>>> import demjson >>> demjson.decode('{suggestion:[{query:"London",interpretation: ...') {u'suggestion': [{u'query': u'London', u'ope…
刚接触前端不久,个人觉得学习程序还是需要经常总结的.下面是我的一些知识的归纳总结,如果哪里说得不对的还请各位大神指点! 1.to str (1)String(arr)将数组中的每个元素转为字符串并用逗号“ , ”连接.又称之为“拍照”. (2)arr.join(“连接符”): 将数组中每个元素转为字符串,用自定义的连接符连接每个元素 无缝拼接,若省略连接符和String等效,可批量生成页面元素 固定套路: a,无缝拼接: var str = arr.join(“  ”): b,将数组中的元素拼接…
1.onblur:(使用在表单元素中,当元素失去焦点的时候执行) 2.onchange:(使用在表单元素中,当某些东西改变是执行) 3.onclick:(鼠标点击一个元素时执行) 4.ondblclick:(鼠标双击一个元素时执行) 5.onfocus:(使用在表单元素中,当元素获得焦点时执行) 6.onkeydown: (按下某个按键时执行) 7.onkeypress:(按下和释放某个按键时执行) 8.onkeyup:(释放某个按键时执行) 9.onload:(在body标签中使用,载入页面的…
1.原型模式 function Father(){ this.property = true; } Father.prototype.getValue = function(){ return this.property; } function Son(){ this.Sonproperty = false; } //继承Father Son.prototype = new Father();//原型重写,contructor被改写 Son.prototype.construtor = Son;…
Lock.Monitor lock和Monitor的区别 1.lock的底层本身是Monitor来实现的,所以Monitor可以实现lock的所有功能. 2.Monitor有TryEnter的功能,可以防止出现死锁的问题,lock没有. 尽管大部分时间您都希望使用 lock 语句,但 Monitor 类可以在需要时给予额外的控制.例如,您可以使用 TryEnter() 而不是 Enter(),并指定一个限定时间,避免无止境地等待锁释放. Mutex Mutex 是 Monitor 更重量级的版本…
建议最简单的第一种 1.通过 JSON 对象实现深拷贝 this.data = JSON.parse(JSON.stringify(this.vm.$store.state.security.menuArr)) 2.通过jQuery的extend方法实现深拷贝 var array = [1,2,3,4]; var newArray = $.extend(true,[],array); 3.使用递归的方式实现深拷贝 //使用递归的方式实现数组.对象的深拷贝function deepClone1(o…
1.警告(alert 消息对话框) alert(字符串或变量); <script type="text/javascript"> var mynum = 30; alert("hello!"); alert(mynum); </script> 2.确认(confirm 消息对话框) confirm(str); 参数说明: str:在消息对话框中要显示的文本 返回值: Boolean值 返回值: 当用户点击"确定"按钮时,返…
今天工作时碰到一个需求,有两个数组arrayChild, arrayFather, 要求: 1.往数组arrayChild中放入一个元素: 2.将当前的数组arrayChild放入arrayFather中: 3.清空数组arrayChild,将一个新元素放进去: 4.将放了新元素的arrayChild放入数组arrayFather中. 刚开始是这么写的: const arrayChild = []; const arrayFather = []; arrayChild.push(0, 1); a…
工厂模式:抽象了创建具体对象的过程 function createPerson(name, age, job){ var obj = new Object(); obj.name = name; obj.age = age; obj,job = job; obj.sayName = function () { console.log(this.name); } return obj; } 根据接收参数来创建特定对象的大量副本,工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题,…
match() match()方法只接受一个参数,要么是一个正则表达式,要么是一个 RegExp 对象. 调用这个方法本质上与调用RegExp的exec()方法相同, var text = "cat, bat, sat, fat"; var pattern = /.at/; //与 pattern.exec(text)相同 text.match(pattern); // ['cat', 'bat', 'sat', 'fat'] search() 这个方法的唯一参数与match()方法的…
toLowerCase(),toLocalLowerCase(),toUpperCase(),toLocaleUpperCase() var stringValue = "hello world"; stringValue.toLowerCase();// "hello world" stringValue.toUpperCase();// "HELLO WORLD" stringValue.toLocaleLowerCase();// &quo…
1.阻止事件冒泡 e.stopPropagation()   ||    e.cancelBubble function stopBubble(e){ if (e.cancelBubble) { e.cancelBubble = true; }else{ e.stopPropagation(); } } 2.获取非行间样式 getcomputedStyle()    参数1:当前对象      参数2:伪类选择器,通常不会使用,用false代替 currentStyle()           …