在定义变量的时候不加var,则
表示变量自动成为全局变量,就相当于你在方法外面已经定义了一个全局变量a,即
function test()
{
a="hello";
alert(a);
alert(window.a);
}
相当于
...
var a;
function test(){
a="hello"; //调用的都是全局变量
alert(a);
alert(window.a);
}
...
但是如果你有一个全局变量a,你在方法里面又定义了一个同名的局部变量a,那么只要是在这个方法里面,a就是指局部变量;如果全局变量a并没有初始化,当你用window.a来调用全局变量a时自然就会是undefined,这就是你加上后三行出现undefined的原因。
即
function test()
{
a="hello";
alert(a);
alert(window.a);
var a = "what";
alert(a);
alert(window.a);
}
就相当于
var a;
function test()
{
a="hello"; //这里a是局部变量
alert(a);
alert(window.a); //全局变量a并没有初始化,所以是undefined
var a = "what";
alert(a);
alert(window.a);
}
![搜索](https://i-blog.csdnimg.cn/blog_migrate/2e2e8c3e741e87eb578b229da420b61e.png)
function test()
{
a="hello";
alert(a);
alert(window.a);
}
相当于
...
var a;
function test(){
a="hello"; //调用的都是全局变量
alert(a);
alert(window.a);
}
...
但是如果你有一个全局变量a,你在方法里面又定义了一个同名的局部变量a,那么只要是在这个方法里面,a就是指局部变量;如果全局变量a并没有初始化,当你用window.a来调用全局变量a时自然就会是undefined,这就是你加上后三行出现undefined的原因。
即
function test()
{
a="hello";
alert(a);
alert(window.a);
var a = "what";
alert(a);
alert(window.a);
}
就相当于
var a;
function test()
{
a="hello"; //这里a是局部变量
alert(a);
alert(window.a); //全局变量a并没有初始化,所以是undefined
var a = "what";
alert(a);
alert(window.a);
}