JavaScript作用域之没有块级作用域

2 篇文章 0 订阅
1 篇文章 0 订阅

JavaScript作用域之没有块级作用域

 

与C、C++以及JAVA不同,Javscript没有块级作用域。函数中声明的所有变量,无论是在哪里声明的,在整个函数中它们都是有定义的。

 

上例子

 

例子一、下面代码中,变量i、j和k和作用域是相同的,它们三个在整个函数中都有定义。

 

<script>
function test(o){
	var i=0;
	if(typeof o == "object"){
		var j=0;
		for(var k=0; k<10; k++){
			document.writeln("k="+k);
		}
		document.writeln("k2="+k);
	}	
	document.writeln("j="+j);	
}

test(new String("pppp"));
</script>

 

输出结果为:k=0 k=1 k=2 k=3 k=4 k=5 k=6 k=7 k=8 k=9 +++k=10 j=0

 

这一规则可以产生惊人的结果,上代码

 

<script>
var scope="global";
function f(){
	alert(scope);
	var scope="local";
	alert(scope);	
}

f();
</script>

 

结果:第一个alert输出:underfined而不是global,第二个alert输出local

 

上面函数f与下面的函数等价:

 

function f(){
	var scope;
	alert(scope);
	var scope="local";
	alert(scope);		
}

 

如果你写成:

 

<script>
var scope="global";
function f(){
	alert(scope);
	var scope2="local";
	alert(scope2);	
}

f();

</script>
 

输出结果为:第一个alert为global,第二个为:local.

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值