var i=12; 
 var a=new Object(); 
 a.i=5; 
 a.j=6; 
 with (a) 
 { 
  temp=i; 
  i=j; 
  j=temp; 
  alert(i); //6 } 
 alert(i); //12,非 6
with 语句容易引起混乱.起初我以为 with语句后紧跟的 alert(i)会是 6 呢!
外面执行的是外面的对象 windows的,全局变量 12。

解决方案 »

  1.   

    with语句内部的i是a对象的属性i,相当于with语句外部的a.iwith(a)语句外部的i是是全局变量i(var i = 12)
      

  2.   

    哪里混乱了,只有在with内部才会访问对象的属性
      

  3.   

    with的执行效率比较低,还是少用比较好
      

  4.   

    这 位大哥不知啊, 初学者没那么清楚,那句alert语句紧跟在上面的with之后,它会弄不清的