Javascript with 用法及效率

with 语句通常用来缩短特定情形下必须写的代码量。使用with关键字来指定某个对象的一系列属性或者方法。

辟如:

with(Math){
		document.write(PI);
		document.write(E);
	 }

与下面等效:
		document.write(Math.PI);
		document.write(Math.E);


的确可以减少代码量,但也见有地方写到“精简代码的方法却会使JavaScript的执行时间增加许多。因为它会去检查大括号内的每个变量是否是这个对象的属性或者方法”。也就是建议使用var而非with

于是无聊中做了下面实验:

<html>
<head>
<script type="text/javascript">

	 
function withTest(){	
 /*三段代码执行效果相同,都是打印Math.E1000次*/
	 var start1,end1;
	 start1=new Date().getTime()
	 for(i=0;i<1000;i++)
	 {
		document.write(Math.E);		
	}
	
	end1=new Date().getTime()
	document.write("<br>"+(end1-start1)+"<br>")/*第一次时间,一般方法打印*/
	
	
	var start2,end2;
	 start2=new Date().getTime()
	 var d=document
	 var m=Math
	 for(i=0;i<1000;i++)
	 {
		d.write(m.E);			
	  }
	
	end2=new Date().getTime()
	document.write("<br>"+(end2-start2)+"<br>")/*第二次时间,使用var*/
	
	var start3,end3;
	 start3=new Date().getTime()
	 with(document){
		with(Math){
		 for(i=0;i<1000;i++)
		 {
			write(E);			
		  }
		 }	
		}
	end3=new Date().getTime()
	document.write("<br>"+(end3-start3))/*第三次次时间,使用with*/
		
	}
</script>
</head>
<body οnlοad="withTest()">
</body>
</html>

三种方法1000次循环的结果时间只差不到10毫秒(一万次也只差几十毫秒,一万次在网页内打印不出来),所以时间代价可以忽略。。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值