JavaScript中关于var以及变量问题

先猜猜下面的输出结果:

<script language="javascript">
 var2 = 111;
function foo()
{
    document.write("var2: "+var2+"<br>"); 
    document.write("window.var2: "+window.var2+"<br>"); 
    var var2 = 122;
   
}
foo();
</script>

如果结果如下,说明,你对JavaScript变量的申明以及初始化有一定的了解了

var2: undefined
window.var2: 111

 其实函数内的变量都是先定义,后赋值的,不管定义变量的语句写在何处。比如,

function foo() 
{ 
document.write(var01); 
var var01=1; 
document.write(var02); 
var var02=2; 
} 
该函数等价于: 
function foo() 
{ 
var var01; 
var var02; 
document.write(var01); 
var01 = 1; 
document.write(var02); 
var02 =2; 
} 

所以在执行document.write(var01)时,变量只是定义了,而没有被赋值,所以输出undefined.

继续关于作用域的问题,先看如下代码:

<script language="javascript">
var var1 = 0;
document.write("var1: "+var1 + '<br>');

  var2 = 111;
function foo()
{
    document.write("var2: "+var2+"<br>"); 
    document.write("window.var2: "+window.var2+"<br>");

    var2 = 12;
	document.write("<br>var2: "+var2+"<br>"); 
	document.write("window.var2: "+window.var2+"<br>");
}
foo();
</script>


然后比对项目的代码:

<script language="javascript">
var var1 = 0;
document.write("var1: "+var1 + '<br>');

  var2 = 111;
function foo()
{
    document.write("var2: "+var2+"<br>"); 
    document.write("window.var2: "+window.var2+"<br>"); 

    var var2 = 122;
    document.write("var2: "+var2+"<br>"); 
    document.write("window.var2: "+window.var2+"<br>"); 

    var2 = 12;
	document.write("<br>var2: "+var2+"<br>"); 
	document.write("window.var2: "+window.var2+"<br>");
}
foo();
</script>


补充关于for循环中i变量,因为变量申明少了var,for 嵌套for循环时建议用不同的遍历变量,请先猜出下面的输出结果:

<script type="text/javascript">
var i = 1; 
function Test() 
{ 
var aa = 33; 
document.write(i+"<br>");
i = i + 1; 
document.write(i+"<br>"); 

for(var i = 0 ; i < 3; i ++ ) 
{ 
    aa = aa + i; 
   for(var i = 0 ; i < 3; i ++ ) 
   { 
      aa = aa + i; 
    } 
} 

document.write(aa+"<br>"); 
document.write(i+"<br>"); 
} 
Test(); 

document.write(i+"<br>"); 
</script>


结果你猜对了么?:

undefined
NaN
36
4
1

总结:(具体例子可以参考)

 在学习JavaScript的变量作用域之前,我们应当明确几点:
a、JavaScript的变量作用域是基于其特有的作用域链的。
b、JavaScript没有块级作用域。
c、函数中声明的变量在整个函数中都有定义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值