我正在尝试在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;
。然后,您可以使用setFoo
在foo = val;
中设置它。然后foo
指的是您在setFoo
以上级别中声明的代码。foo
在setFoo
和alert
调用中都可以访问;将其与上述示例代码进行比较(function1
是setFoo
,a
是foo
,并且alert
调用位于最高级。在您的情况下,不使用function2
,b
和c
。)