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

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

js函數作用域的問題

js函數作用域的問題

收到一只叮咚 2018-12-19 18:19:40
在看阮一峰老師的es6入門的函數作用域部分時,亂搞出了一段代碼,發(fā)現了一些問題var x = 2;function foo(x, y) {    var x = 3;    y();    console.log(x);}foo(1, function() {            console.log(x);            x = 5;        });結果y中打印出x = 2,為什么不是1或3呢?foo打印出x = 3然后稍作調整,var x = 2;function foo(x) {    var x = 3;    function y () {        console.log(x);        x = 5;    }    y();    console.log(x);}foo(1);y中打印的是3,foo中打印的是5,倒是符合預期,這是為什么呢?
查看完整描述

1 回答

?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

因為你上面代碼傳入參數function的函數作用域為外層,并非foo里面的,你上面的代碼可以改寫成這樣


var x = 2


function test() {

    console.log(x) // 會找到外層的 x = 2

    x = 5

}


function foo(x, y) {

    var x = 3

    y()

    console.log(x) // 會找到foo 函數中的 x = 3

}


foo(1, test)

倘若你要是這樣,便可以得到foo里面的x


var x = 2


function test(x) {

    console.log(x) // 會找到外層的 x = 2

    x = 5

}


function foo(x, y) {

    var x = 3

    y(x)

    console.log(x) // 會找到foo 函數中的 x = 3

}


foo(1, test)

希望能幫到你


查看完整回答
反對 回復 2019-01-26
  • 1 回答
  • 0 關注
  • 428 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號