js中用关键字 var 创建局部变量,通过测试发现
如果在函数体外:
用不用var创建的都是全局变量,挂载在window对象上;
如果在函数体内:
用var的创建的是局部变量,挂载在当前对象上;
不用var的创建的是全局变量,挂载在window对象上。
测试1:
s = "Hello"; //不带var,挂载在window对象上
var o={
f:function(){
s = "JS"; //给全局s重新赋值
}
};
document.write(s+'<br>');
o.f();
document.write(s+'<br>');
结果:<span style="white-space:pre"> </span>Hello
<span style="white-space:pre"> </span>JS
var s = "Hello"; //带var<span style="font-family: Arial, Helvetica, sans-serif;">,挂载在window对象上</span>
var o={
f:function(){
s = "JS";//给全局s重新赋值
}
};
document.write(s+'<br>');
o.f();
document.write(s+'<br>');
结果:<span> </span>Hello
<span> </span>JS
测试3:
var s = "Hello"; //带var,挂载在window对象上
var o={
f:function(){
var s = "JS";//带var,挂载在当前对象上
}
};
document.write(s+'<br>');
o.f();
document.write(s+'<br>');
结果:<span> </span>Hello
<span> </span>Hello
测试3:
var o={
f:function(){
s = "JS"; //创建全局s,挂载在window对象上
}
};
//document.write(s+'<br>'); //该句执行结果为undefined,因为还未定义 s
o.f();
document.write(s+'<br>');
结果: <span style="font-family: Arial, Helvetica, sans-serif;">JS</span>