变量相互引用的原因是:由于某些类型的变量是按地址存储的而导致的两个或多的参数的值互相影响:
测试如下:
关于对节点对象操作产生的影响:
由于是函数是按值传递,所以在插入节点时,引用的是节点本身,而不是它的一个克隆,所以节点被转移了
如:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <style type="text/css"> .c2{ border:1px solid #ccc; width:100px; height:100px;} .c1{ border:2px solid #000; width:50px; height:60px;} </style> </head> <body> <div class="c1" id="div1">div1</div> <div class="c2" id="div2">div2</div> <br /> <input type="button" value="append div1 to div2" id="button" /> <script type="text/javascript"> function $(elem){return document.getElementById(elem);} var div1=$("div1"); var div2=$("div2"); var button=$("button"); button.onclick=function(){ div2.appendChild(div1); }; </script> </body> </html>
最后一个是关于节点的移除的,本来以为用innerHTML=""来移除元素内容的话,在IE中会把创建的节点从内存中彻底消除,事实并非如此,而是产生了很奇怪的现象: