js作用域解释下

这两个的区别 为何第一个报错了 感觉是作用域 但是讲不出个所以然 ,有没有具体解惑的
第一种

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


汪汪一只猫
浏览 707回答 2
2回答

守候你守候我

js中引用一个变量时,当前作用域未定义会去上级作用域寻找,你可以简单的理解成一个{ }包裹着的是一个作用域。你可以成功运行的那段代码因为上级作用域有个参数是w,直接引用了那个变量,不会报错。不能运行的那段,那个function外面就是window了,js找遍了上级没有找到对w的定义,报错了

梦里花落0921

function e (v) {    console.log(w) }第一个报错很明显,w未定义啊。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript