读书人

javascript传送参数 值传递 VS 引用传

发布时间: 2012-08-25 10:06:20 作者: rapoo

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中只有值传递,没有引用传递。

?

读书人网 >VSTS

热点推荐