JavaScript 对象文字语法错误
JavaScript object literals syntax error
以下代码在Chrome和Firefox中产生语法错误,但不会在Node.js中产生语法错误:
{"hello": 1}
但是,以下代码适用于所有位置:
var x = {"hello": 1}
此外,以下内容在任何地方都有效:
{hello: 1}
这种奇怪行为的解释是什么?
NodeJS REPL 通过将代码包装在括号中,将代码作为表达式进行评估,导致{"hello":1}
被({"hello":1})
成功解析为对象文字。
通常和其他地方(在Chrome/Firefox的控制台中(,大括号被解析为块的分隔符,例如:
/*imagine if (true) */ {
"hello": 1 // <-- What's this syntax? It's meaningless.
}
{hello:1}
成功解析,因为在此上下文中hello
具有标签的含义:
/*imagine if (true) */ {
hello: 1;
} // ^-- Automatic Semicolon Insertion
第一个示例不是对象文字,它是一个块。块包含语句。字符串文本、冒号、数字文本不是有效的语句。
第二个示例是对象文本。
第三个示例也是一个块,但您已将字符串文字和冒号替换为标签(这是允许的,但由于没有循环,因此毫无意义(。
上下文在 JavaScript 中很重要。
相关文章:
- 错误:语法错误,无法识别的表达式:不支持的伪:无效/RectJS/Unit Testing
- 未捕获错误:语法错误,无法识别的表达式:input[@type=submit]
- jQuery AJAX Post方法错误(语法错误)
- 如何“;修复解析错误:语法错误,意外'{'in”用于php
- 错误:错误:语法错误,无法识别的表达式:
- 未捕获错误:语法错误,无法识别的表达式:ajaxsample/update_agenda(CodeIgniter)
- 未捕获错误:语法错误,无法识别表达式Jquery选择器单引号与双引号
- Javascript ( jQuery ) 错误: 语法错误: 缺少 ) 在参数列表之后
- 错误:语法错误:令牌“”,“”是意外的标记
- 未捕获的错误:语法错误,无法识别的表达式:输入:复选框[名称=ninja_forms_field_57[术语]]
- 未捕获的错误:语法错误,无法识别的表达式:“.b-brand-box”
- 未捕获的错误:语法错误,无法识别的表达式:href
- ReactJS 返回解析器错误语法错误:在 AJAX 调用 JAVA servlet 后出现意外的标记 a
- jQuery:未捕获错误:语法错误,无法识别的表达式
- j查询错误 - 语法错误:缺少:在属性 ID 之后
- 在使用 Gulp 在 javascript 中声明对象时,在 Git bash 中出现以下错误“语法错误:意外标识符”
- 获取未捕获错误:语法错误、无法识别的表达式
- 获取错误语法错误:属性列表 url 后缺少 }:http://localhost/mcportal/public/pos
- 为什么我收到错误“语法错误:非法字符”
- 未捕获错误:语法错误,无法识别的表达式