b={a:1} Ob-6ren">
gpt4 book ai didi

javascript - Chrome - JSON 对象声明控制台中的异常行为

转载 作者:行者123 更新时间:2023-11-29 10:49:05 25 4
gpt4 key购买 nike

我在 Chrome 控制台中使用 JSON 对象时遇到了这种异常行为:

> {a:1}
1
> {"a":1}
SyntaxError: Unexpected token :
> b={a:1}
Object
> b={"a":1}
Object

为什么第一个语句返回 1 而不是一个对象,为什么第二个语句有效?我希望前两个语句返回与后两个语句相同的输出。

最佳答案

JavaScript 表达式语句不能以 { 开头,因为它会导致解释器产生歧义,解释器也可能将其视为语句 block 。

所以这被认为是一个带有语句标签和数字文字而不是对象文字的语句 block :

{a:1}

但这被认为是语法无效的语句 block ,因为没有语句可以以 "a":

开头
{"a":1}

但是这些不是以 { 开头的。它们以 b = 开头,因此 { 被认为是对象文字的开始。

b = {a:1}
b = {"a":1}

12.4 Expression Statement

NOTE An ExpressionStatement cannot start with an opening curly brace because that might make it ambiguous with a Block. Also, an ExpressionStatement cannot start with the function keyword because that might make it ambiguous with a FunctionDeclaration.


这意味着您需要做的就是用不同的字符开始表达式语句以使其有效。

例如,您可以将其括在括号中,它会起作用:

({"a": 1})

关于javascript - Chrome - JSON 对象声明控制台中的异常行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13803431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com