js函数参数理解

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>

对于数组,原来是数组,后来声明了“局部变量”,并没有影响。

上述可能有误,欢迎予以指正。

原文地址:https://www.cnblogs.com/intangible/p/6765198.html