为了账号安全,请及时绑定邮箱和手机立即绑定

js作用域解释下

js作用域解释下

汪汪一只猫 2018-09-02 07:57:08
这两个的区别 为何第一个报错了 感觉是作用域 但是讲不出个所以然 ,有没有具体解惑的第一种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
查看完整描述

2 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

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

查看完整回答
反对 回复 2018-09-02
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

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

第一个报错很明显,w未定义啊。


查看完整回答
反对 回复 2018-09-02
  • 2 回答
  • 0 关注
  • 705 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信