为什么嵌套函数作用域变量会产生不同的错误

时间:2017-04-27 02:08:20

标签: javascript

我按照JavaScript运行:

var foo = function() {
  var a = 3,
      b = 5;
  var bar = function() {
    var b = 7,
        c = 11;
    a += b + c;
    console.debug(d);
  };
  bar();
  console.debug(c);
  var d = 10;
};
foo();

显然,嵌套函数d不知道bar,外部函数c不知道foo。但在开发人员工具中,当我加载我的网页时,我会逐个获得两个不同的日志:

undefined
Uncaught ReferenceError: c is not defined

为什么两种情况的错误不同?在我看来,如果相应的变量不为他们所知或超出范围,两者都应抛出简单抛出的引用错误。

1 个答案:

答案 0 :(得分:0)

变量c在函数foo返回时死亡; c位于bar的本地,因为使用了var限定符。