Js閉包常見三種用法

2022-05-02 13:27:12 字數 729 閱讀 8242

js閉包特性源於內部函式可以將外部函式的活動物件儲存在自己的作用域鏈上,所以使內部函式的可以將外部函式的活動物件占為己有,可以在外部函式銷毀時依然存有外部函式內的活動物件內容,這樣做的好處是可以為程式設計資料獲取提供簡巧快捷的方式,缺點是占用記憶體時間過長,容易造成記憶體洩漏,影響效能。下面是我總結的閉包常見的三種用法:

(function()

console.log(temps); //[1, 2, 4, 7, 11, 16, 22, 29, 37, 46]

})();

console.log(i); //undefined

function func1(str)

function func2(fn,str2)

console.log(func2(func1,"loujia xing!")); //johnharvy loves loujia xing!

function func3()

return func4;

}console.log(func3()("loujia xing!")); //johnharvy loves loujia xing!

這裡再證明一下函式的引數也是可以被內部函式儲存的:

function func5(str)

return func6;

}func5("hai!")();//hai

js 閉包概念,用法

1 我們常說的閉包就是函式巢狀函式,內部函式可以引用外部函式的引數和變數 如下 2 會涉及到js中的垃圾 機制 指 當函式執行完時,函式的變數將會收回,閉包就不一樣了 如下 3 閉包中當外部函式載入完時,外部函式的變數內部函式還可以繼續使用,不會 如下 4 閉包的好處 將乙個變數長期駐紮在記憶體中 ...

js閉包中this的指向問題及三種解決方法

下面是乙個問題,物件方法中定義的子函式,子函式執行時this指向 三個問題 1 以下 中列印的this是個什麼物件?2 這段 能否實現使mynumber.value加1的功能?3 在不放棄helper函式的前提下,有哪些修改方法可以實現正確的功能?var mynumber helper i mynu...

js 閉包的用法詳解

實現可重用的區域性變數,且保護其不受汙染的機制。外層函式包裹受保護的變數和內層函式。內層函式專門負責操作外層函式的區域性變數。將內層函式返回到外層函式外部,反覆呼叫。子函式會一級一級地向上尋找所有父函式的變數。所以,父函式的所有變數,對子函式都是可見的,反之則不成立。外層函式呼叫了幾次,就有幾個受保...