网络上看到一篇文章,《JavaScript 传递参数是值传递?还是值传递啊?》
地址:
http://www.xiaoxiaozi.com/2010/03/05/1719/
当然看这之前我是很清晰知道基本数据类型传值,引用数据类型传引用。
刚看了个开头就有点晕了,文章所说:
“在本文开头,首先,十万以及万分肯定的说一句,JavaScript 函数传递参数时,是值传递。”
有兴趣的朋友可以去看原文。 我看了之后就顺手写起了示例代码:
(1) 典型传值
function setName(name)
{
name = "test";
}
var person = new Object();
person.name = " hechangmin ";
setName(person.name);
alert(person.name); // hechangmin
(2) 典型的传引用
function setName(obj)
{
obj.name = "test";
}
var person = new Object();
person.name = " hechangmin ";
setName(person);
alert(person.name); // test
我想大家对输出的结果都没异议。这也是我记忆中的理解。
下面带领大家看一些可能引起大家议论的示例:
var x = new Object();
x.name = "test";
function setName(obj)
{
obj = x;
alert(obj == x); // true 因为上一句进行了赋值操作
}
var person = new Object();
person.name = " hechangmin ";
setName(person);
alert(person.name); // hechangmin
alert(person == x); // false
传进去的 person 肯定是 引用数据类型。(这点没歧义)
进去后发现 给引用赋以新值 x 。函数内部 alert(obj == x); 也输出了 true
说明赋值是成功的。
而函数执行完毕,发现值依然没变。 就这个结果来看,说是传值还真没什么说不过去的。
但是我随后在
http://www.blogjava.net/magicdoom/archive/2006/02/27/32555.html (建议有兴趣的朋友可以看看)找到一篇讲 javascript 传值 传引用的文章。
文章有说传递进去的引用型参数,在内部如果直接对引用参数赋值。 javascript 会自动生成一份copy ,而不去影响原有的引用。
===========
综上所述 ,基本就都明白。文章写到这里基本就接近尾声,不过这里提到了 javascript string , 下次有机会总结关于 string 的神奇后,再和大家分享交流。
分享到:
相关推荐
传值还是传引用的问题,到此已经算是解决了,但是我们仍然不能解决这样一个问题:如果我有两个 int 型的变量 a 和 b,我想写一个方法来交换它们的值,应该怎么办? 结论很让人失望——没有办法!因此,我们只能...
java中传值与传引用,详细讲解java中的传值与传引用
java中传值还是传引用的的认识? 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
JAVA传值与传引用[整理].pdf
引用类型不像值类型传值那样直接,那么引用类型是怎么样传值的呢?答案就在此文档中。
在本篇文章里小编给大家整理的是关于php传值和传引用的区别点总结,需要的朋友们可以参考下。
python基础入门教程:传参是传值还是传引用
Java是传值还是传址引用
C++ comparing call_by_value(传值调用) and call_by_reference(引用调用)
android activityIntent 传值 传对象
构造函数,借助构造函数 解释 【赋值传值】,【引用传值】,【指针传值】
vue组件在prop里根据type决定传值还是传引用。 简要如下: 传值:String、Number、Boolean 传引用:Array、Object 若想将数组或对象类型也以值形式传递怎么办呢?如下方式可以实现: // component-A 引用component-...
传值和传引用-我和LabVIEW:一个NI工程师的编程经验
主要是对Java方法传值和传引用问题进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
主要介绍了Python参数传递机制传值和传引用原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
C语言函数调用三种方式 传值调用,引用调用和传地址调
42.传值和传引用.doc
传值和传引用的问题一直是Java里争论的话题。与C++不同的,Java里面没有指针的概念,Java的设 计者巧妙的对指针的操作进行了管理。事实上,在懂C++的Java程序员眼中,Java到处都是精美绝伦的指 针。
java及C++中传值传递、引用传递和指针方式的理解.docx