js 对象 函数中 按值传递

var a = {name:"a"}

var b = {name:"b"}

function changeObj(obj){
obj = b;
}
changeObj(a)

console.log(a) //{name:"a"}

以上代码中,两个对象a,b ,然后 对 a 进行 函数操作,如果是引用传递的话,就相当于 a=b, console.log(a)的结果应该是{name:"b"}。但是结果并非如此。

比较简单理解是,上面代码中 a 和 函数中obj 都是指向同一个实例{name:"a"},但是 obj 是 a 的引用副本。函数中只是改了a 引用副本 obj的指向,并没有改变a的指向。所以a还是指向{name:"a"}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 6,362评论 1 10
  • (一)函数 1.函数基本声明 function fun([参数1],[参数2],...){ 函数体; }; 2....
    妖妖灵嘛0阅读 2,593评论 0 0
  • 一、你不知道的JavaScript 1、作用域 作用域 LHS RHS RHS查询与简单地查找某个变量的值别无二...
    顶儿响叮当阅读 2,750评论 0 0
  • 1、使用typeof bar ===“object”来确定bar是否是一个对象时有什么潜在的缺陷?这个陷阱如何避免...
    我是大橙阅读 3,604评论 0 1
  • 1、使用typeof bar ===“object”来确定bar是否是一个对象时有什么潜在的缺陷?这个陷阱如何避免...
    深海鲫鱼堡阅读 3,843评论 1 1