<script>
标签放在</body>
前面,不要放在<head>
中,防止形成堵塞const el = document.querySelector('.myDiv') el.style.borderLeft = '1px' el.style.borderRight = '2px' el.style.padding = '5px'
可使用以下语句代替css
const el = document.querySelector('.myDiv')
el.style.cssText = 'border-left: 1px; border-right: 2px; padding: 5px;'
cssText会覆盖已存在的样式,若是不想覆盖已有样式,能够这样node
el.style.cssText += ';border-left: 1px; border-right: 2px; padding: 5px;'
:hover
<ul> <li>苹果</li> <li>香蕉</li> <li>凤梨</li> </ul> // good document.querySelector('ul').onclick = (event) => { let target = event.target if (target.nodeName === 'LI') { console.log(target.innerHTML) } } // bad document.querySelectorAll('li').forEach((e) => { e.onclick = function() { console.log(this.innerHTML) } })
当你须要批量修改DOM时,能够经过如下步骤减小重绘和重排次数:git
该过程会触发两次重排——第一步和第三步。若是你忽略这两个步骤,那么在第二步所产生的任何修改都会触发一次重排。
有三种方法可使DOM脱离文档:github
for
while
do-while
for-in
,只有for-in
循环比其余其中明显要慢,由于for-in
循环要搜索原型属性forEach
比通常的循环要慢,若是对运行速度要求很严格,不要使用if-else
switch
,条件数量越大,越倾向于使用switch
if-else
switch
,速度更快switch(value) { case 0: return result0 break case 1: return result1 break case 2: return result2 break case 3: return result3 break } // 可使用查找表代替 const results = [result0, result1, result2, result3]
str += 'one' + 'two'
此代码运行时,会经历四个步骤:算法
onetwo
被赋值给该临时字符串str += 'one'
str += 'two'
第二种方式比第一种方式要更快,由于它避免了临时字符串的产生编程
你也能够用一个语句就能达到一样的性能提高数组
str = str + 'one' + 'two'
setTimeout
和setInterval
来对代码进行分割,避免对页面形成堵塞Web Workers
来处理,由于Web Workers
不占用浏览器UI线程的时间const obj = new Object() const newObj = {} const arry = new Array() const newArry = []
使用字面量会运行得更快,而且节省代码量浏览器
x =* x // 用位运算代替 x <<= 1