您好,登錄后才能下訂單哦!
作用域鏈:
//作用域鏈 var a = 1; function test() { var b =2; return a; } alert(test());//彈出1; alert(b);//不能獲取b //scope chain var a = 1; function test() { var b = 2; function test1() { var c = 3; alert(a); alert(b); alert(c); } test1(); } test();//彈出1,彈出2,彈出3;
詞法作用域:
//詞法作用域; function f1() { var a = 12; return f2(); } function f2() { return a; } alert(f1());//并不能獲取a,a在f2()中并未定義; function f1() { var a = 1; return f2(); } function f2() { var b = 3; alert(b); return a; } alert(f1());//彈出3,a在f2()中未定義 function f1() { var a = 1; return f2(); } function f2() { var b = 3; alert(b); return a; } alert(f1());//彈出3,a在f2()中未定義,undefined var a=55; alert(f1());//彈出3,彈出55
如何通過閉包突破全局作用域鏈——幾種常見形式
//通過閉包突破全局作用域鏈 function f() { var a = "sun"; return function () { return a; } } var test = f(); alert(test());//彈出sun var n; function f() { var a = "sun"; n = function () { return a; } } f(); alert(n());//彈出sun function f(param) { var n =function () { return param; }; param++; return n; } var test = f(45); alert(test());//彈出46;
總結
以上所述是小編給大家介紹的JS閉包的幾種常見形式 ,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。