Javascript 为什么`{foo:1}`在控制台中计算为`1`,而`{foo:1,bar:2}`会导致错误?
我知道Javascript 为什么`{foo:1}`在控制台中计算为`1`,而`{foo:1,bar:2}`会导致错误?,javascript,Javascript,我知道{}要么是一个对象,要么是一块代码,但今天我的同事问我为什么{foo:1}在进入控制台时可以工作,但是{foo:1,bar:2}会产生一个错误 为什么foo:1在控制台中计算为1?本身,{a:1}是一个块语句,其中a是一个标签 当然,在需要表达式的上下文中,它是一个对象文本: var o = { a: 1 }; {}不总是阻塞,您可以使用它创建一个对象(JSON样式) 比如说 var objectName = { propertyName:"Fiat", model:5
{}
要么是一个对象,要么是一块代码,但今天我的同事问我为什么{foo:1}
在进入控制台时可以工作,但是{foo:1,bar:2}
会产生一个错误
为什么
foo:1
在控制台中计算为1
?本身,{a:1}
是一个块语句,其中a
是一个标签
当然,在需要表达式的上下文中,它是一个对象文本:
var o = { a: 1 };
{}
不总是阻塞,您可以使用它创建一个对象(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 { ...}
这完全取决于上下文:
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)相等测试(=
,===
,!=
,等等)或赋值(=
),则它是一个对象。所有其他上下文都是“一段代码”。很抱歉,由于缺乏声誉,我没有在你的帖子下发表评论
你能详细解释一下“为什么我可以用JavaScript打印foo:1”吗
如果我运行这个代码
var t = {foo: 1};
var t = {foo: 1, bar: 2};
它将成为对象“t”的属性。如果使用此代码,将实现相同的行为
var t = {foo: 1};
var t = {foo: 1, bar: 2};
您可以通过“t.foo”和“t.bar”访问它,它将返回值“1”或“2”
您可以在这里阅读“object”的解释,具体取决于上下文,
{}
当然可以是一个(空的)对象(文本)。如何打印?“打印”==在控制台中执行?实际上,无论在哪里需要表达式,它都将是一个对象,这在测试和赋值以外的情况下是正确的。举一个例子,在fun({a:1})
中,当用作函数参数时,它被解析为对象文本。从技术上讲,它是赋值,因为该值被赋值给函数参数列表中定义的任何变量。