Javascript withの使い方と効率


with文は通常、特定の状況において書かなければならないコード量を短縮するために用いられる.withキーを使用して、あるオブジェクトの一連の属性または方法を指定します.
以下のとおりである
with(Math){
		document.write(PI);
		document.write(E);
	 }
以下と同等:
		document.write(Math.PI);
		document.write(Math.E);
確かにコードの量を減らすことができますが、「コードを簡素化する方法はJavaScriptの実行時間を多くします.それは大きい括弧内の各変数がこの対象の属性または方法かどうかを調べるためです.」と書かれています.つまりwithではなくvarを使うことを提案します.
そこで退屈中に次の実験をしました.
<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 onload="withTest()">
</body>
</html>
3つの方法の1000回のサイクルの結果は10ミリ秒以下です.(1万回でも数十ミリ秒しか差がないので、1万回ではページ内で印刷できません.)時間の価値は無視できます.