Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript {}.hasOwnProperty('id');返回控制台中的语法错误_Javascript_Google Chrome - Fatal编程技术网

Javascript {}.hasOwnProperty('id');返回控制台中的语法错误

Javascript {}.hasOwnProperty('id');返回控制台中的语法错误,javascript,google-chrome,Javascript,Google Chrome,我在Chrome控制台中玩过,想知道为什么这个语句会抛出语法错误: {}.hasOwnProperty('id'); 我的期望是返回值为false。 Firefox和IE中也出现语法错误。 如果我使用空数组而不是空对象,同样的情况也会发生。 如果我在周围放上大括号,同样也可以: ({}.hasOwnProperty('id')); {}被视为一个语句块,而不是您所期望的对象。因此出现了错误 编辑:正如评论中提到的@Cerbrus,{}.hasOwnProperty'id';将返回false而

我在Chrome控制台中玩过,想知道为什么这个语句会抛出语法错误:

{}.hasOwnProperty('id');
我的期望是返回值为false。 Firefox和IE中也出现语法错误。 如果我使用空数组而不是空对象,同样的情况也会发生。 如果我在周围放上大括号,同样也可以:

({}.hasOwnProperty('id'));
{}被视为一个语句块,而不是您所期望的对象。因此出现了错误


编辑:正如评论中提到的@Cerbrus,{}.hasOwnProperty'id';将返回false而不是错误。这是因为当用括号括住{}时,它被解释为一个对象。

所讨论的代码段中存在语法歧义。JavaScript中的大括号有两种含义:它们用于分隔代码块,例如:

if (x) {
    ...
}
它们用于声明对象文字:

var obj = {
    prop: "value"
}
Constext用于区分这两种解释,如果:

{}.hasOwnProperty('id');
大括号被解析为块声明,所以这会产生语法错误。另一方面:

({}.hasOwnProperty('id'));

不能在括号内声明块,因此{}在此上下文中被识别为对象文字。

FYI:{}.hasOwnProperty'id';同样有效。{}不带括号或应用的运算符被解析为语句块,而不是对象文字。在这种情况下,{}将被解释为块语句,而不是对象文字。object.hasOwnProperty'id';返回false。我认为命名惯例可以解释这一点?这是一个完整的答案。