js之你不知道的引用传递
之前有一篇文章深拷贝和浅拷贝说明了js中传值和传引用,或者叫值传递和引用传递。
可能是我闲的蛋疼吧。
假设有这样一段代码
1 | var a = 1; |
执行结果是
1 | 123 |
关于传值、传地址、传引用。我是在一片c++的博文找到的,不知道准不准确。
按文中说法,如果是传引用的话,没有实参的拷贝,对形参的修改必然反映到实参上,而这里没有。而传地址,只有对形参指向的对象的修改,才会影响实参,对形参本身的修改(这里的obj2修改的不是自己,而是自己指向的对象),并不会影响实参(这里的obj1指向了另一个对象,也就是更新了变量保存的地址)。
所以我觉得这里因该是传地址。
顺便提一下,我在看java的时候,所有地方都说java只有值传递!!!
传地址是不是也是一种传值呢,java的非基本数据类型,栈上的变量存的也是对象在堆中的地址。
再贴一条我在stackoverflow上看到的讨论帖Is JavaScript a pass-by-reference or pass-by-value language?,我觉得上面解释是符合这段代码的结果的。
欢迎来怼。。。
评论