空格在javascript中很重要

Bre*_*ton 0 javascript syntax whitespace

在Java / C / C ++中(并且,除Python外,我能想到的所有其他语言)都将忽略空格。

我刚刚花了几个小时试图弄清楚为什么我在return语句中遇到错误。答案是空格。

所以这是我认为在功能上等效的两个代码段。

return { a:b, c:d};

return
{
a:b,
c:d
};
Run Code Online (Sandbox Code Playgroud)

但是我现在知道第一个可以工作,但是第二个可以在c:d行上引发错误。

有人可以解释为什么它们在语法上不相等吗?

Jon*_*ink 5

这里的问题是JavaScript具有一个称为“ 自动分号插入“功能”

因此,您的第二个代码段实际上是像这样执行的(请注意后面的分号return):

return;
{
a:b,
c:d
};
Run Code Online (Sandbox Code Playgroud)

基本上,您正在返回undefined,而不是对象文字。

JavaScript具有所谓的“不良部分”,您遇到了其中之一。我强烈建议您阅读有关该主题的

请参阅本文以获取有关自动分号插入的更多信息。

如果您仍然希望将代码的格式设置为与最初的格式类似,那么这可能是最适合您的选择:

return {
a:b,
c:d
};
Run Code Online (Sandbox Code Playgroud)