第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

總結(jié)的內(nèi)容感覺有點夸大匿名函數(shù)的作用

總結(jié)的內(nèi)容感覺有點夸大,說“匿名函數(shù)可以有效的保證在頁面上寫入JavaScript,而不會造成全局變量的污染”我覺得有點故弄玄虛,我認(rèn)為防止全局變量污染是定義函數(shù)和調(diào)用函數(shù)時考慮,而不是使用匿名函數(shù)。

其實js的函數(shù)定義和調(diào)用就是兩句話,這兩句也是closure和callback的核心

1、函數(shù)定義時決定了這個函數(shù)所綁定的scope chain,但這個scope chain里的變量是活的;

2、函數(shù)調(diào)用時決定了使用scope chain里參數(shù)使用什么值。


例如下面這段代碼

function?fn1(cb){
var?fn1_var?=?"callback";
cb();
}

function?fn2(){
function?cb(){
console.log(fn1_var);
}
fn1(cb);
}

fn2();?//what's?print?in?console?

執(zhí)行后臺會打印什么?如果你還認(rèn)為是"callback"就再想想我上面的話,呵呵。


從這個例子也可以看出,不使用匿名函數(shù),函數(shù)cb在執(zhí)行時也訪問不到fn1函數(shù)中定義的變量,但即使無論你如何用匿名函數(shù),例如下面:

var?g?="global";
function?fn1(cb){
var?fn1_var?=?"callback";
(function(){cb();})();
}
function?fn2(){
function?cb(){
console.log(g);
}
fn1(cb);
}
fn2();?//what's?print?in?console?

都必然可以訪問到g這個變量,這就是javascript中scope chain的概念。


所以,恕我愚鈍,我實在不覺得匿名函數(shù)對防止全局變量污染有何作用?倒不是說匿名函數(shù)這樣寫不好,相反教程里的話也讓我大受啟發(fā),只是對這個說法感覺有點牽強。


很感謝這篇教程,希望教主早點做完

正在回答

3 回答

意思是你把你自己的變量定義的立即執(zhí)行的匿名函數(shù)中,這樣就不會與其他開發(fā)人員在全局定義的變量相混淆了

0 回復(fù) 有任何疑惑可以回復(fù)我~

函數(shù)運行在被定義的作用域中,而不是被執(zhí)行的作用域中,本來就是把變量定義到作用域中去使用

1 回復(fù) 有任何疑惑可以回復(fù)我~

是在匿名函數(shù)里去聲明需要用到的局部變量,這樣的局部變量,匿名函數(shù)外面是不可以訪問的。你說的這個和人家想表達(dá)的完全不是一個意思啊。

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

總結(jié)的內(nèi)容感覺有點夸大匿名函數(shù)的作用

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號