javascript – 理解通过引用传递vs使用函数的值

前端之家收集整理的这篇文章主要介绍了javascript – 理解通过引用传递vs使用函数的值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
据我所知,对象在 JavaScript中通过引用传递(原语通过值传递?).
var a,b;
a = {
    Foo: "Bar"
}
b = a;
a.Foo = "Other";
console.log(b.Foo); // "Other"

这与数组的工作方式类似但不像我期望的那样工作:

var a,b;
a = function(){ return 20; }
b = a;
a = function(){ return 40; }
console.log(b()); // returns 20 ?

我很困惑,因为我认为函数是对象.上面的例子不应该返回40吗?

解决方法

在第一种情况下,a.Foo = …,您正在更改对象中属性的值,由a和b引用.这称为变异对象.

但在第二种情况下,您正在引用一个新的函数对象.现在,a和b指的是不同的功能对象.

这就是为什么你在第二种情况下得到20.

猜你在找的JavaScript相关文章