JS的全局变量与局部变量

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


测试2:

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>




阅读更多
个人分类: Javascript
上一篇JS中Date对象getYear()方法和getFullYear()方法区别
下一篇js变量以及其作用域详解
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭