let obj1 = {
a: 1,
b: 2,
c: 3
};
let obj2 = ({
a: 1,
b: 2,
c: 3
});
obj1
和obj2
完全相同吗?它们在javascript中定义对象的方式相同吗?
答案 0 :(得分:7)
obj1
和obj2
完全相同吗?
是。虽然它们在您的问题中严格相等(它们不是相同的对象引用),但它们基本相同。
javascript中
({})
和{}
之间是否存在差异?
是的。我知道两种情况,这可能会产生影响。
首先,您可能在ES6 arrow functions之前遇到过这种语法:
let array = [1, 2, 3, 4, 5];
let mappedArray = array.map(value => ({
original: value,
double: value * 2
}));
在这里,确实有所作为,因为大括号本身将被解释为作为map
的参数传递的函数的边界。也就是说,如果没有额外的括号,您需要:
array.map(value => {
return {
original: value,
double: value * 2
};
});
作为附注,上述两个内容与以下内容相同(this
的处理除外,不受ES6箭头语法的阻碍):
array.map(function (value) {
return {
original: value,
double: value * 2
};
});
其次,对象文字表达式本身在JavaScript中无效,因为大括号被解释为块的左右括号。
所以虽然这是语法错误:
{
a: 1,
b: 2,
c: 3
}
......以下不是(虽然它本身绝对没用):
({
a: 1,
b: 2,
c: 3
})
答案 1 :(得分:1)
简单的答案是否。没有区别。您可以省略括号并获得完全相同的结果。
答案 2 :(得分:1)
它们完全相同,实际上你可以在第二种情况下省略()。
答案 3 :(得分:1)
在你的例子中,它们完全相同。在这种情况下,括号无用于声明obj2
。
编程中的括号(在评估值时)就像在方程式中一样,因此具有:
let obj1 = {
a: 1,
b: 2,
c: 3
};
let obj2 = ({
a: 1,
b: 2,
c: 3
});
与:
相同x = 2
x = (2)
在数学中