本期問題:document.write和innerHTML、innerText有什麼區別?jQuery中如何中斷each遍歷?如何查找數組中的最小值和最大值?如何做到優雅降級,漸進增強?$.fn.extend和$.extend區別是什麼?如何收集頁面中多個ajax的執行結果?js創建對象有哪幾種方式...
本期問題:
-
document.write和innerHTML、innerText有什麼區別?
-
jQuery中如何中斷each遍歷?
-
如何查找數組中的最小值和最大值?
-
如何做到優雅降級,漸進增強?
-
$.fn.extend和$.extend區別是什麼?
-
如何收集頁面中多個ajax的執行結果?
-
js創建對象有哪幾種方式?
-
在地址欄輸入url中間會經歷什麼?
-
你所瞭解的前端技術棧有哪些?
-
ajax在jquery底層是如何實現的?
上期答案:
1.實例化一個函數的時候,new關鍵字的過程是怎樣的?
答:
1.創建一個新對象;
2.將構造函數的作用域賦給新對象(因此this指向了這個新對象);
3.執行構造函數中的代碼(為這個新對象添加屬性);
4.返回新對象
2.什麼是js阻塞?
答:
Js具有阻塞特性,當瀏覽器在執行js代碼時,不能同時做其他事情,即<script>標簽每次出現都會讓頁面等待腳本的解析和執行,Js執行完成後,才能繼續渲染頁面。
再深入一點去瞭解瀏覽器構造頁面的原理:當瀏覽器從伺服器接收到了HTML文檔,並把HTML在記憶體中轉換成DOM樹,在轉換的過程中如果發現某個節點(node)上引用了CSS或者IMAGE,就會再發1個request去請求CSS或image,然後繼續執行下麵的轉換,而不需要等待request的返回,當request返回後,只需要把返回的內容放入到DOM樹中對應的位置就OK。
但當引用了JS的時候,瀏覽器發送1個js request就會一直等待該request的返回。因為瀏覽器需要1個穩定的DOM樹結構,而JS中很有可能有代碼直接改變了DOM樹結構,比如使用document.write 或 appendChild,甚至是直接使用的location.href進行跳轉,瀏覽器為了防止出現JS修改DOM樹,需要重新構建DOM樹的情況,所以就會阻塞其他的下載和呈現。
-
下麵的代碼執行結果是什麼?
for(var i = 0 ; i < 10; i++){
setTimeout(function(){
console.log(i);
}, 0);
}
答:
都是10
因為setTimeout是非同步的,在執行setTimeout時for迴圈已結束。