我终于好奇地发现为什么javascript会运用它的巫术魔法来了解为什么不能创建所有对象引用。
举个例子:
var a, b, c, d;
a = 100; b = a;
c = {}; d = c;
b = 10; d.e = 'f';
console.log(a, b); // outputs 100, 10
console.log(c, d); // outputs object => e = 'f', object => e = 'f'
如果javascript中的所有变量都是对象,那么c
和d
的用例明确表示为Object
与定义a
和{{ 1}}为b
?或者,为什么Number
和c
会相互关联,而不是d
和a
?
答案 0 :(得分:8)
JavaScript中的所有变量都不是对象。也有原生类型。
c
和d
未相互链接。它们指向同一个对象引用。如果您要将d
重新分配给其他内容,则不会影响c
。
var c = {};
var d = c;
d = { foo: "bar" };
c === d // false
但是,如果您要修改c
或d
引用的对象,它将修改同一个对象,因为c
和d
都指的是与你的例子中的对象相同。
答案 1 :(得分:3)
我认为不同之处在于b
,您将变量重新分配给新的对象/值,而使用d
时,您< em>修改现有对象。
答案 2 :(得分:2)
分配给a
的{{1}}的值是一个数字。从b
到c
分配的值是对象的引用。
d