<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