eg:
function setName(obj){ obj.name = "Nicholas"; obj = new Object(); obj.name = "Greg" } var person = new Object(); setName(person); alert(person.name); //"Nicholas"
例子的结果显示的值仍然是“Nicholas",即使在函数内部修改了参数的值,但原始的引用仍然保持未变。实际上,当在函数内部重写obj时,这个变量引用的就是一个局部对象了。而这个局部对象会在函数执行完毕后立即销毁。
即可以把ECMAScript函数的参数想象成局部变量。
如下案例同理。
<script type="text/javascript"> var a = 12; var b = [12]; function change1(a){ a = 13; } function change2(b){ b[0] = 13; } change1(a) change2(b) console.log(a); console.log(b[0]) </script>
对于数组,原来是数组,后来声明了“局部变量”,并没有影响。
上述可能有误,欢迎予以指正。