var f = function ()
function f()
函式宣告和函式表示式的主要區別是,函式宣告會被前置,而函式表示式作為變數,會被提公升。
下方是js執行時的邏輯
// 前置和變數提公升
var f;
function f()
f = function ()
var f = function ()
function f()
f();
上方**直接結果為:1
一道題考察閉包(迴圈閉包)
var o = ;
for(var i = 0; i < 5; i++)
}o[3]();
以上**執行結果為:5
如何改進以上**,使o[1]=>1; o[2]=>2; ..., 那就是利用閉包咯
var o = ;
for(var i = 0; i < 5; i++)
})(i);
}o[3]();
以上**執行結果為:3
解析:
var o = ;
for(let i = 0; i < 5; i++)
}
閉包第二種應用場景(封裝變數)(function () ;
export.getname = function ()
export.setname = function (newname)
window.export = export;
})();
呵呵,只有通過釋放出來的export才能訪問私有變數
閉包的缺陷
閉包中的變數因為可能還會被內部函式用到,因此所佔記憶體一直不能被釋放,導致記憶體浪費
函式表示式 閉包
有權訪問另乙個函式作用域內變數的函式。常見的方式就是在乙個函式的內部建立另外乙個函式。functiona b a a內的b可以訪問a的內部變數color 閉包只能取到包含函式中任何變數的的最後乙個值。function a return arr console.log a 0 10 console.l...
函式4 函式表示式 閉包
閉包 函式中的函式 用於獲取函式內部變數的函式 function a return b console.log info 報錯 info is not defined console.log a hello 在全域性作用域中,如果想訪問a函式中的變數info,直接訪問會報錯,因為a函式體是個作用域,...
函式表示式(1) 含閉包
定義函式的方法有兩種,一種是函式宣告,一種是函式表示式 函式宣告 function 函式表示式 他們兩個不同的地方在於,函式宣告會有乙個提公升 相當於會在執行 前讀取函式宣告 而函式表示式不會有 函式宣告 function 函式表示式 在函式表示式中,就像變數一樣,會被賦予undefined值,而不...