JavaScript在局部和全局变量上的作用域
代码如下:JavaScript在局部和全局变量上的作用域,javascript,Javascript,代码如下: var foo = 1; function bar() { alert(foo) if (!foo) { var foo = 10; } alert(foo); } bar(); 而foo是全局变量。调用b()函数后,foo将作为未定义的函数发出警报。因为它是全局变量,所以应该作为1发出警报,对吗?如果我错了,请纠正我 有两个变量称为foo 一个在第1行声明,它是全局的,另一个在第5行声明,它是bar函数的本地 请记住,var语句是挂
var foo = 1;
function bar() {
alert(foo)
if (!foo) {
var foo = 10;
}
alert(foo);
}
bar();
而foo是全局变量。调用b()函数后,foo将作为未定义的函数发出警报。因为它是全局变量,所以应该作为1发出警报,对吗?如果我错了,请纠正我
有两个变量称为
foo
一个在第1行声明,它是全局的,另一个在第5行声明,它是bar
函数的本地
请记住,var
语句是挂起的,因此如果您有一个函数的局部变量,那么它对所有函数都是局部的
当您在第3行和第7行警告
foo
的值时,您正在警告本地foo
您有两个名为foo
的变量
一个在第1行声明,它是全局的,另一个在第5行声明,它是bar
函数的本地
请记住,var
语句是挂起的,因此如果您有一个函数的局部变量,那么它对所有函数都是局部的
当您在第3行和第7行警告
foo
的值时,您正在警告本地foo
否。。。由于将foo
在bar
函数中声明为局部变量,因此在函数中使用foo
时将不会访问全局实例
由于变量提升,您将获得未定义的
,其中所有变量声明将移动到函数顶部,因此在执行时,您的函数将如下所示
var foo = 1;
function bar() {
var foo;
alert(foo)
if (!foo) {
foo = 10;
}
alert(foo);
}
bar();
不。。。由于将
foo
在bar
函数中声明为局部变量,因此在函数中使用foo
时将不会访问全局实例
由于变量提升,您将获得未定义的
,其中所有变量声明将移动到函数顶部,因此在执行时,您的函数将如下所示
var foo = 1;
function bar() {
var foo;
alert(foo)
if (!foo) {
foo = 10;
}
alert(foo);
}
bar();
谢谢你的回答。。在第5行声明第二个变量之前。。。。我正在提醒全局变量。。。然后就显现出来了undefined@answer99-不,你不是。再读一遍我的答案。请特别注意最后两段。谢谢你的回答。。在第5行声明第二个变量之前。。。。我正在提醒全局变量。。。然后就显现出来了undefined@answer99-不,你不是。再读一遍我的答案。特别注意最后两段。