新变量引用对象而不是复制它们是标准的Javascript行为吗?

时间:2017-01-03 14:37:45

标签: javascript arrays string object numbers

我目前正在学习javascript中的对象。

我遇到了一些我没想到的行为,我想确认一下,看到我应该看到的是什么,或者我是否在某处犯了错误。

var a = 1;
var b = a;
b++;
console.log(a); // 1 (As expected)
console.log(b); // 2

var a = 'string';
var b = a;
b += 'ier';
console.log(a); // string (As expected)
console.log(b); // stringier

var a = {};
var b = a;
b['testValue'] = 'test';
console.log(a); // {testValue = 'test'} (Wait... what?!)
console.log(b); // {testValue = 'test'}

加了:

我刚尝试使用数组进行相同的实验,我看到数组表现出与对象相同的行为(假设数组是Javascript中的对象,可能是预期的)

var a = [];
var b = a;
b[0] = 'test';
console.log(a); // ['test'] (Hmmm... again!)
console.log(b); // ['test']

为什么对象和数组的行为与数字和字符串不同?

为什么var b仅引用var a而不是重复它?

0 个答案:

没有答案