1樓:碼路行者
1、js沒有塊級作用域,定義的i變數屬於函式n中的變數,在函式n中可以訪問到;
2、函式n中主要涉及兩個執行環境: arr中儲存的函式中的區域性環境,函式n的區域性環境。相應的作用域鏈為:
arr中的函式的變數物件->函式n的變數物件。arr中的函式在執行時,作用域鏈向上查詢,自身的變數物件中沒有i這個變數,繼續向上查詢函式n的變數物件,而在經歷三次迴圈後,此時i的值已經是3,所以值為3.
3、如果要讓i為相應的數值,應該延長作用域鏈,使用匿名函式構造塊級作用域,方法如下:
function n()
})(i);
}return arr;
}var funs = n();
funs[0]();
funs[1]();
funs[2]();
JS閉包問題求解,js閉包的問題。
getnamefunc是物件object的內部方法,所有this object 你怎麼可以用object做變數的?第二個方法 getnamefunc 返回了一個函式 你並沒有繫結上下文,就放到window這個物件中了,號稱全域性變數 如果這樣 var o o.fun objectx.getnamef...
js動態獲取id的問題,js獲取div的id值的問題
千鋒教育 html規則要求id名稱不能相同,會衝突的。如果你要選擇多個物件要用tag或者class。不要使用id屬性。常用的dom方法有 getelementsbyclassnamegetelementsbytagname getelementsbyclassname有時候會失靈,所以,getele...
關於js物件問題
window 物件表示瀏覽器中開啟的視窗。如果文件包含框架 frame 或 iframe 標籤 瀏覽器會為 html 文件建立一個 window 物件,併為每個框架建立一個額外的 window 物件。註釋 沒有應用於 window 物件的公開標準,不過所有瀏覽器都支援該物件。不過你可以理解為 win...