{}.hasOwnProperty('id');返回控制台中的语法错误
{}.hasOwnProperty('id'); returns syntax error in console
我在Chrome控制台上玩了一番,想知道为什么这句话会引发语法错误:
{}.hasOwnProperty('id');
我的期望值是返回值false
Firefox和IE中也会出现语法错误
如果我使用一个空数组而不是一个空对象,这同样有效
如果我把支架放在周围,同样有效:
({}.hasOwnProperty('id'));
有问题的代码段中存在语法歧义。JavaScript中的花括号有两种含义:它们用于分隔代码块,例如:
if (x) {
...
}
它们用于声明对象文字:
var obj = {
prop: "value"
}
Constext用于区分这两种解释,在的情况下
{}.hasOwnProperty('id');
大括号被解析为块声明,所以这会产生语法错误。另一方面:
({}.hasOwnProperty('id'));
不能在括号内声明块,因此{}
在该上下文中被识别为对象文字。
{}被视为语句块,而不是您所期望的对象。因此出现了错误。
编辑:正如@Cerbrus在评论中提到的,({}).hasOwnProperty('id')将返回false而不是错误。这是因为当用括号包围{}时,它被解释为Object。
相关文章:
- 在量角器中创建一个.txt错误输出文件是手动的,而不是控制台错误
- PHP REST服务抛出异常——希望避免控制台错误
- jQuery控制台错误:无法读取属性'top'的未定义
- 角度材料和流星的控制台错误
- 调用Javascript时出现控制台错误
- 出现“未捕获的类型错误:未定义不是函数”控制台错误
- JQuery控制台错误
- 是什么导致了这个JS控制台错误
- 将Protractor配置为忽略浏览器控制台错误
- Javascript未执行.没有控制台错误,没有验证错误
- 控制台错误含义
- 浏览器控制台错误
- 为什么我的 ajax 调用不将数据存储在数据库中?没有 PHP 或控制台错误
- 尝试在drupal站点上使用响应式幻灯片,但收到控制台错误
- Javascript在IE7,8,9中返回控制台错误,但在所有其他浏览器中都能完美运行
- 通过 jQuery 发布发布表单 - 没有控制台错误
- 光滑滑块控制台错误
- 铬控制台错误
- Cufon 控制台错误,未替换字体.(引用错误:找不到变量:Cufon)
- 通过AJAX加载谷歌地图API,控制台错误