我知道{}
是一个对象或代码块,但今天我的同事问我为什么{foo: 1}
在进入控制台时有效,但是{foo: 1, bar: 2}
生成一个错误。
为什么foo: 1
在控制台中评估1
?
答案 0 :(得分:8)
{a: 1}
本身就是一个块语句,其中a
是一个标签。
当然,在期望表达式的上下文中,它是一个对象文字:
var o = { a: 1 };
答案 1 :(得分:0)
{}
不会一直阻止,你可以用它制作一个对象(JSON样式)
例如
var objectName = {
propertyName:"Fiat",
model:500,
color:"white",
methodName:function(a) {
return a;
}
};
objectName.methodName('aa');
objectName.propertyName
objectName[propertyName]
他们是块
if(...){ .. }
while(...) { ... }
try(..) { ...} catch { ...}
答案 2 :(得分:0)
这完全取决于背景:
function test() {
var foo = {a:1}; // this is an object
{ alert('Hi mom!'); } // this is a block of code
{ a: 1 }; // also just a block of code, but `a:` is a label
}
如果在{in}相等性测试({}
,==
,===
等...)或作业({{ 1}}),然后它是一个对象。所有其他上下文都只是“一块代码”。
答案 3 :(得分:0)
我很抱歉由于缺乏声誉而不在您的帖子下发表评论。
你能详细说明"为什么我可以用JavaScript打印foo:1"?
如果我运行此代码
console.log(this.Entertainment.hour)
它将成为对象" t"的属性。如果您使用此代码
,将实现相同的行为var t = {foo: 1};
你可以通过" t.foo"来访问它。和" t.bar"并且它将返回值" 1"或" 2"。
你可以阅读"对象"的解释。这里JavaScript Objects