我很好奇cachevar()是否會緩存el元素一次或每次運行它時?jquery緩存元素一次運行多次
function cachevar() {
var el = $('.element')
el.toggleClass('open')
}
cachevar();
我很好奇cachevar()是否會緩存el元素一次或每次運行它時?jquery緩存元素一次運行多次
function cachevar() {
var el = $('.element')
el.toggleClass('open')
}
cachevar();
它會在每次調用它時分配一個新變量。
所以它不會「緩存」任何東西。
如果你需要有一個你打算調用很多次,希望緩存它使用元素的功能,你需要移動那些在封閉:
var el = $('.element');
function cachevar() {
el.toggleClass('open')
}
cachevar();
cachevar();
通過這樣做,cachevar
將訪問到相同的el
對象。
如果沒有將對象包含在閉包中,則無法緩存對象。如果你不希望有el
重挫的當前範圍,你可以用在一個-所謂IIFE(立即調用函數表達式),因此它創建了一個新的範圍:
var cachevar = (function() {
var el = $('.element');
return function() {
el.toggleClass('open')
}
}());
// el is undefined here
cachevar();
cachevar();
這將緩存它每次你打電話給你的函數:
function cachevar() {
var el = $('.element')
el.toggleClass('open')
}
cachevar();
所以如果你聲明一個全局函數,那麼,一旦你打電話給你的函數,那麼EL會被緩存在任何地方使用,則:
var el='';
function cachevar() {
el = $('.element')
el.toggleClass('open')
}
cachevar();
alert(el); //<---here el is '$(".element")'
它不會緩存內容。每當cachevar方法運行時,el變量都會被分配。 –