javascript - 多个空白变量声明有什么区别

标签 javascript object

文字对象方法:

var objectA = {}; 
var objectB = {};

对比

var objectA = objectB = {};

构造对象方法:

var objectA = new Object();
var objectB = new Object();

对比

var objectA = objectB = new Object();

最佳答案

其实,当你这样做的时候

var objectA = {}; 
var objectB = {};

var objectA = new Object();
var objectB = new Object();

您正在创建两个不同的 JavaScript 对象,它们由 objectAobjectB 引用。但是当你这样做的时候

var objectA = objectB = {};

var objectA = objectB = new Object();

您实际上只创建了一个对象,并使 objectAobjectB 引用同一个对象。

你可以通过检查两个对象是否相同来确认这一点,就像这样

var objectA = {}, objectB = {};
console.log(objectA === objectB);
// false
var objectC = objectD = {};
console.log(objectC === objectD);
// true

注意:

var objectC = objectD = {};

会这样评价

var objectC = (objectD = {});

这就是为什么 objectCobjectD 引用同一个对象。

重要: As dfsq mentions in the comment ,在最后一个例子中,objectD 将被泄露到全局范围。因此,请避免使用此模式。

关于javascript - 多个空白变量声明有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27887561/

相关文章:

javascript - jquery中数据的用途? (与将我自己的字段添加到 Jquery 对象相比)

c++ - 引用范围外的数组

javascript - 如何从对象数组中删除属性

javascript - 如何将事件跟踪添加到 Javascript 警报

javascript - javascript中的 Accordion 菜单列表

javascript - 简单例子中call、apply、bind的比较

javascript - 试图理解这个例子中的函数闭包和词法环境。使用 let 变量声明与对象属性声明

javascript - 如何从同一类javascript中的方法返回对象数组

JavaScript 对象函数

javascript - 从 XHR 获取响应 Content-Type header