我不能在 Dev Console 中编写对象文字符号?
I can't write object literal notation in Dev Console?
我写这个的时候出错了:
{a:1, b:2}
但我刚写这篇文章的时候不是
{a:1}
我在 Firefox 中试过,chrome 都出错了。
赋值给变量不会报错
一直都是这样吗,为什么会出错。命令行中的nodejs没有错误。
复制粘贴 json 代码以更好地探索它后,我发现了错误。然后做了实验..(这一定是新东西)
{ /* ... */ }
是 block statement.
如果你想让它被解析为一个object initialiser,你必须在需要表达式的地方使用它。
一些示例:
{} + ''; // `0`, parsed as block
'' + {}; // `"[object Object]"`, parsed as expression
{} * 1; // Error, parsed as block
1 * {}; // `NaN`, parsed as expression
一种将其解析为表达式并获取结果对象的方法,因为结果将其括在括号内:
({ /* ... */ })
将对象括在括号中,如下所示:
({a:1, b:2})
原因是 JavaScript 对许多不同的事物使用大括号,例如 if 语句、for 循环,在您的例子中,还有对象声明。
当您不进行任何类型的赋值时,换句话说,将其设置为等于一个变量,则默认情况下大括号的含义有所不同。
要坚持JavaScript将这些浮动大括号视为对象文字表示法,您必须将大括号括在圆括号中。
(this has to be something new)
没有。这个:
{a:1}
...也不被视为对象文字。你可以看到当你输入它到控制台时,因为控制台返回1
,而不是带有对象。它被解释为块语句的开始,然后是 label a:
,然后是表达式 1
,然后是块的结尾。
考虑到这一点,您可以看到:
{a:1, b:2}
...被解释为块语句的开头,标签 a:
,然后是表达式1, b
,后跟意外的:
.
无论是在浏览器控制台还是在 html 页面的脚本中,都会出现这种情况。要让浏览器将整个事物视为一个表达式,只需将其括在括号中即可:
({a:1, b:2})
我写这个的时候出错了:
{a:1, b:2}
但我刚写这篇文章的时候不是
{a:1}
我在 Firefox 中试过,chrome 都出错了。
赋值给变量不会报错
一直都是这样吗,为什么会出错。命令行中的nodejs没有错误。
复制粘贴 json 代码以更好地探索它后,我发现了错误。然后做了实验..(这一定是新东西)
{ /* ... */ }
是 block statement.
如果你想让它被解析为一个object initialiser,你必须在需要表达式的地方使用它。
一些示例:
{} + ''; // `0`, parsed as block
'' + {}; // `"[object Object]"`, parsed as expression
{} * 1; // Error, parsed as block
1 * {}; // `NaN`, parsed as expression
一种将其解析为表达式并获取结果对象的方法,因为结果将其括在括号内:
({ /* ... */ })
将对象括在括号中,如下所示:
({a:1, b:2})
原因是 JavaScript 对许多不同的事物使用大括号,例如 if 语句、for 循环,在您的例子中,还有对象声明。
当您不进行任何类型的赋值时,换句话说,将其设置为等于一个变量,则默认情况下大括号的含义有所不同。
要坚持JavaScript将这些浮动大括号视为对象文字表示法,您必须将大括号括在圆括号中。
(this has to be something new)
没有。这个:
{a:1}
...也不被视为对象文字。你可以看到当你输入它到控制台时,因为控制台返回1
,而不是带有对象。它被解释为块语句的开始,然后是 label a:
,然后是表达式 1
,然后是块的结尾。
考虑到这一点,您可以看到:
{a:1, b:2}
...被解释为块语句的开头,标签 a:
,然后是表达式1, b
,后跟意外的:
.
无论是在浏览器控制台还是在 html 页面的脚本中,都会出现这种情况。要让浏览器将整个事物视为一个表达式,只需将其括在括号中即可:
({a:1, b:2})