只能说是会用和记载,深入理解还需时间. 有关性能优化: 使用createdocumentfragment()方法可以创建某个具有节点该有的所有属性的节点. 使用情况:  提取文档中的某个小部分,修改文档中的小节点,添加部分内容在节点尾部或者某个标志处. 虽然可以用文档的文档对象来在这些情况中使用,但如果防止文件结构被破坏,createDocumentFragment() 方法可以更安全改变文档的结构及节点. 一般这样用: let newLists=document.createDocumentF…
隐式转换比较是js中绕不过去的坎,就算有几年经验的工程师也很有可能对这块知识不够熟悉.就算你知道使用===比较从而避免踩坑,但是团队其它成员不一定知道有这样或那样的坑,有后端语言经验的人常常会形成一个思维误区:“JS这门语言很简单,看看语法再找几个例子就能操作DOM,编写特效了”.随着react.vue.html5等技术在项目中大规模使用,越来越多的项目中使用了大量的JS,甚至整个项目都用JS来写(例如基于webapi的SPA管理后台.微信小程序.微信H5应用,Hybrid app),如果不深入…
一.对象字面量语法 var person={ name:'小王', age:18, _pri:233 } 成员名称的单引号不是必须的 最后一个成员结尾不要用逗号,不然在某些浏览器中会抛出错误 成员名相同会发生什么? es5普通模式下后定义的会覆盖前面定义的,严格模式则会报错 es6则不管什么模式都采用后面的覆盖前面的 成员名可以是动态变量吗? es5只能在对象字面量表达式申明以后再添加 var dynamicVar="dyna"; var person={ } person[dynam…
js变量细节是前端面试经常遇到的问题,可见其重要程度,要想掌握这个知识点,需注意以下几点: 变量提升 所谓变量提升,就是使用了var关键字申明的变量,会提升到所在作用域的顶部.es5的作用域分为全局作用域和函数作用域,es6(es2015)增加了块级作用域 function test(){ console.log(i); //输出undefined而不是报错 var i=5; } 上面代码实际上等于 function test(){ var i; console.log(i); //输出unde…
function Car () { this.color = "red"; } Car.prototype.sayHi=function(){ console.log('你好') }var car =new Car(); var car2 = Object.create(Car); new XXX()时发生了什么? var obj={}; obj.__prototype=Car.prototype Car.call(obj) 第一步,创建了一个空对象obj第二步,将空对象的__prot…
预定义类 量词 贪婪.惰性.支配性量词 前瞻 边界 RegExp是全局对象,RegExp.$1...$9是全局属性.当执行任意正则表达式匹配操作时,JavaScript会自动更新全局对象RegExp上的全局属性,用以存储此次正则表达式模式的匹配结果.当再次执行正则表达式匹配时,RegExp上的全局属性又会更新,覆盖掉之前的存储数据,以反映本次正则表达式模式的匹配结果. var str = "X98Y87Z65"; // 三个数字部分加了小括号,表示子表达式 var reg = /^X(…
1.窗口和浏览器 window.innerWidth.window.innerHeight   浏览器内部可用宽高 window.outerWidth.window.outerHeight   浏览器整体宽高 window.screenTop(Firefox采用screenX)    浏览器左上角距离屏幕顶端的距离(IE.Opera.Chrome中如果紧贴屏幕顶部的话,则Top为浏览器工具栏的高度,而Firefox则为0)window.screenLeft((Firefox采用screenY)…
接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = function(){ console.log("say Hi!"); } document.getElementById("click_2").onclick = () => { let a = 1; let b = 2; console.log(a + b);…
前端分享----JS异步编程+ES6箭头函数 ##概述Javascript语言的执行环境是"单线程"(single thread).所谓"单线程",就是指一次只能完成一件任务.如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务. 这种模式的好处是实现起来比较简单,执行环境相对单纯:坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行.常见的浏览器无响应(假死),往往就是因为某一段Javascript代码长时间运行(比如死循环),…
同步 vs 异步 先看下面的 demo,根据程序阅读起来表达的意思,应该是先打印100,1秒钟之后打印200,最后打印300.但是实际运行根本不是那么回事 console.log(100) setTimeout(function () { console.log(200) }, 1000) console.log(300) 再对比以下程序.先打印100,再弹出200(等待用户确认),最后打印300.这个运行效果就符合预期要求. console.log(100) alert(200) // 1秒钟…