我正在尝试在codeacademy上学习JS,但我听不懂/过去了。有人可以提供答案,也可以解释为什么吗?将深表感谢。

// This function tries to set foo to be the
// value specified.

function setFoo(val) {
  // foo is declared in a function. It is not
  // accessible outside of the function.
  var foo = val;
}

setFoo(10);

// Now that we are outside the function, foo is
// not defined and the program will crash! Fix this
// by moving the declaration of foo outside of the
// function. Make sure that setFoo will still update
// the value of foo.
alert(foo);

最佳答案

您可以将范围视为一个术语,表示可以在代码的特定“级别”到达哪些变量。在JavaScript中,这些“级别”由函数定义。每个功能都引入了一个新的层次。

例如,使用以下示例代码:

var a;
// you can access a at this level

function function1() {
  var b;
  // you can access a, b at this level

  function function2() {
    var c;
    // you can access a, b, c at this level
  }
}

因此,在您的情况下,应在函数外部(最好在函数上方)声明var foo;。然后,您可以使用setFoofoo = val;中设置它。然后foo指的是您在setFoo以上级别中声明的代码。
foosetFooalert调用中都可以访问;将其与上述示例代码进行比较(function1setFooafoo,并且alert调用位于最高级。在您的情况下,不使用function2bc。)

09-10 17:19