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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

遇到一道關于作用域的題,求解

遇到一道關于作用域的題,求解

有只小跳蛙 2019-03-06 14:15:03
非常不明白為什么上述代碼會輸出‘x’。首先iife應該不存在變量提升,變量提升只存在于函數(shù)聲明,而不是函數(shù)表達式。其次在:(function (foo) {console.log(foo) // x foo = 'y';})(foo);確實能取到外部的foo值。但是為什么最后return foo值還是沒有變 求大佬解答!!
查看完整描述

5 回答

?
UYOU

TA貢獻1878條經(jīng)驗 獲得超4個贊

(function(){


var foo = "x";

(function(a){

    a="y";

})(foo);

return foo;

})();

你那個等價于這個 這樣應該易懂一點吧


查看完整回答
反對 回復 2019-03-18
?
蝴蝶刀刀

TA貢獻1801條經(jīng)驗 獲得超8個贊

js函數(shù)重新開辟新內(nèi)存棧,不管是不是立即執(zhí)行函數(shù)。 那么函數(shù)形參 你這里取名字為foo 。 
執(zhí)行的時候 外面foo的值傳入 ,注意不是引用,了解了吧

查看完整回答
反對 回復 2019-03-18
?
BIG陽

TA貢獻1859條經(jīng)驗 獲得超6個贊

首先,顯然、執(zhí)行外層IIFE過程中里面的IIFE會執(zhí)行(且沒有return)、執(zhí)行完后銷毀,雖然里面IIFE能讀到外面的foo,且能改變foo的值,但隨后即銷毀,不污染外層IIFE中的foo。
接著,外層IIFE繼續(xù)(foo是‘x’),并因為return foo,返回'x'。

查看完整回答
反對 回復 2019-03-18
?
德瑪西亞99

TA貢獻1770條經(jīng)驗 獲得超3個贊

這里是值傳遞(也就是把x傳進去了,而不是把foo變量傳進去),如果foo指向一個對象,那就是引用傳遞,在里面修改foo,會作用到外面


(function(){

    var foo = {a:1,b:"s"};

    (function (foo) {

        foo.a = 'y';

    })(foo);

    return foo;

})();

//{a:"y",b:"s"}


查看完整回答
反對 回復 2019-03-18
  • 5 回答
  • 0 關注
  • 652 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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