javascript - 为什么属性名称中的引号会引发错误?

标签 javascript json node.js

当我使用包含 only {"test":1} 的 node.js 执行文件时,会引发 SyntaxError :

(function (exports, require, module, __filename, __dirname) { {"test":1}
                                                                     ^
SyntaxError: Unexpected token :
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3

但是 {test:1}(不带引号)或 var t = {"test":1} 工作正常。

我执行包含正在运行的代码的文件:node test.js

为什么?

最佳答案

{} 形成一个 block .

测试: 是一个 label ,这是有效的(但没有意义,因为没有循环)。

"test":是一个字符串,后面跟一个冒号,这是废话。

var foo = {}{} 置于不同的上下文中,因此它们形成了一个 object literal而不是一个 block 。在对象文字中,属性名称可以是标识符或字符串。


您的 test.js 内容看起来像 JSON,而不是 JavaScript。执行它没有任何意义,因为它不做任何事情。

关于javascript - 为什么属性名称中的引号会引发错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24184688/

相关文章:

javascript - 未捕获的 TypeError : canvas. selectAll(...).data(...).enter 不是 d3 中的函数

javascript - 中心 Javascript 幻灯片?

ios - 从服务器获取 JSON 后如何更新应用程序中的标签?如果应该实时更新

javascript - Elasticsearch 批量设置 _id

node.js - 重定向到登录时出现 Keycloak CORS 问题

javascript - react Prop : Unable to access key in object in array with index both passed with props

javascript - Internet Explorer 中的 HTML5 元素 : runtime insertion

java - jackson 多态性 : How to map multiple subtypes to the same class

java - 使用gson在java中写入json文件

javascript - Multer 前端的自定义文件名