在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  HTML/ js作用域解釋下

js作用域解釋下

這兩個的區(qū)別 為何第一個報錯了 感覺是作用域 但是講不出個所以然 ,有沒有具體解惑的
第一種


function e (v) {
    console.log(w)
}
 function a(z){
    return function b(y) {
        return function c(x) {
            return function d(w) {
                return e
            }
        }
    }
}
a(1)(2)(3)(4)(5)
// 報錯

第二種


 function a(z){
    return function b(y) {
        return function c(x) {
            return function d(w) {
                return function e (v) {
                    console.log(w)
                }
            }
        }
    }
}
a(1)(2)(3)(4)(5)
// 4
回答
編輯回答
兔囡囡

和作用域有毛關(guān)系 問題是值都沒傳遞

仔細(xì)看看我下面的倆種寫法

function e (v) {
    console.log(v)
}
 function a(z){
    return function b(y) {
        return function c(x) {
            return function d(w) {
                return e(w)
            }
        }
    }
}
a(1)(2)(3)(4)   //輸出4

=============================

function e (v) {
    console.log(v)
}
 function a(z){
    return function b(y) {
        return function c(x) {
            return function d(w) {
                return e
            }
        }
    }
}
a(1)(2)(3)(4)(5)  //輸出5
2018年4月22日 02:56
編輯回答
墨小羽

js中引用一個變量時,當(dāng)前作用域未定義會去上級作用域?qū)ふ?,你可以簡單的理解成一個{ }包裹著的是一個作用域。
你可以成功運(yùn)行的那段代碼因?yàn)樯霞壸饔糜蛴袀€參數(shù)是w,直接引用了那個變量,不會報錯。
不能運(yùn)行的那段,那個function外面就是window了,js找遍了上級沒有找到對w的定義,報錯了

2018年5月18日 14:52
編輯回答
兔囡囡

第一種當(dāng)然報錯。

function e (v) {
    console.log(w)
}

w的作用域在e這個函數(shù)內(nèi),沒有定義

第二種不會報錯,可以看看閉包的相關(guān)知識。

2018年3月3日 15:44
編輯回答
涼薄
function e (v) {
    console.log(w)
}

第一個報錯很明顯,w未定義啊。

2017年1月13日 19:21