javascript传递参数 值传递 VS 引用传递
选手自我介绍:
值传递:多针对于基本类型而言,即外部定义变量,传递给函数后,如果在函数内部对参数进行了改变,不会影响外部定义变量本身的值。
?
引用传递:多针对对象而言,即外部定义的对象,传递给函数后,如果在函数内部对对象进行了改变,就会影响外部定义的对象。
?
值传递 vs? 引用传递开始
值传递示例
function changeObj(obj){ obj.color ="red"; obj = new Object(); obj.color = "yellow";}var flower = new Object();flower.color = "blue";changeObj(flower);alert(flower.color);//red
?为什么alert(flower.color)是red而不是yellow?
?
稍等,专家席给出评论:
按照引用传递的说法,传递进去的flower对象的最终值被赋予了新对象,并且color属性值为yellow,而结果却是red,故引用传递在javascript中这个概念错误的。
为什么值会被变为red,因为obj和flower引用的是堆内存中的同一个对象,换句话说即使这个对象是按值传递的,obj也会按引用的内存地址对同一个对象进行修改,
故引用传递给出的例子说明不了什么。
?
宣布:值传递 vs 引用传递? ,值传递获胜。
自古成者王败者寇:javascript中只有值传递,没有引用传递。
?