标签之前,确保脚本执行前页面已经完成了渲染,避免脚本的下载阻塞其他资源(例如图片)的下载。
标签标签的defer和async属性(两者的区别见这里)标签插入文档来下载,其不会影响页面其他进程with语句,其会延长作用域链window.location.hrefinnerHTML,而不是DOM方法length,容易导致死循环children属性,而不是childNodes属性,前者访问速度更快,且不包含空白文本和注释节点。display:none、文档片段),应用修改后,再插入文档中。offsetTop、scrollTop、clientTop、getComputedStyle等一系列布局属性时,会强制浏览器立即进行重排返回正确的值。因此不要在dom布局信息改变时,访问这些布局属性。for循环和while循环性能差不多,除了for-in循环最慢(其要遍历原型链)Duff Devices减少迭代次数switch比if-else快,但如果具有很多离散值时,可使用数组或对象来构建查找表+和+=效率比数组的join方法要高lastIndex属性),之后正则表达式会逐个检查文本和正则模式,当一个特定的字元匹配失败时,正则表达式会试着回溯到之前尝试匹配的位置,然后尝试其他路径。如果正则表达式所有的可能路径都没有匹配到,其会将起始搜索位置下移一位,重新开始检查。如果字符串的每个字符都经历过检查,没有匹配成功,则宣布彻底失败。.*和[\s\S]*等,很可能会出现回溯失控的情况,在js中可以应用预查模拟原子组(?=(pattern))\1来避免不必要的回溯。除此之外,嵌套的量词,例如/(A+A+)+B/在匹配"AAAAAAAA"时可能会造成惊人的回溯,应尽量避免使用嵌套的量词或使用预查模拟原子组消除回溯问题。|,有助于提高匹配的效率。setTimeout(function(){process(todo.shift());if (todo.length > 0) {setTimeout(arguments.callee, 25);} else {callback();}
})
setTimeout(function(){let start = +new Date();do {process(todo.shift());} while(todo.length > 0 && (+new Date() - start) < 50)if (todo.length > 0) {setTimeout(arguments.callee, 25);} else {callback();}
})
WebWork进行计算Expires: Mon,28 Jul 2018 23:30:30 GMT
eval、Function进行双重求值Object/Array字面量定义,不要使用构造函数if (i & 1) {className = 'odd';
} else {className = 'even';
}
Math对象等这本书的分析工具似乎有些已经过时了,这里推荐使用chrome浏览器自带的performance模块进行分析,感觉很不错,可以参考这篇文章

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!