JavaScript中变量的范围

时间:2017-09-12 09:12:24

标签: javascript web

function foo(a) {
  function a() {
    return 8;
  }
  return a();
  y = 9;
}
console.log(foo() + " " + y);

这为变量y提供了未定义的错误。

function foo(a) {
  y = 9;

  function a() {
    return 8;
  }
  return a();
}
console.log(foo() + " " + y);

这会在浏览器控制台中打印8 9

如果我们声明一个没有var关键字的变量,那么它就变成了全局变量。

为什么第一个功能不遵循这个想法?

1 个答案:

答案 0 :(得分:0)

这是因为在第一个示例中,您在return之前有一个y = 9语句,因此永远不会达到分配,从而使其未定义。