空格字符作为JavaScript中的标点符号

Šim*_*das 8 javascript

在ECMAScript规范的第7.7章(标点符号)中(http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf),标点符号的网格似乎在第3行中有一个空白.最后一栏.这实际上是空格字符标点符号,对吗?

据我所知,空格字符可以插入任意 JavaScript代码标记之间(为了提高可读性),但是,我想知道他们实际上需要 ...

为了找到这个,我在jQuery库的缩小版本中搜索了空格字符.这些是我的结果:

需要一个空间......(见下面的更新)

...在关键字和标识符之间:

function x(){}
var x;
return x;
typeof x;
new X();
Run Code Online (Sandbox Code Playgroud)

...两个关键字之间:

return false;
if(x){}else if(y){}else{}
Run Code Online (Sandbox Code Playgroud)

这是我发现的两个案例.还有其他案件吗?

注意:字符串文字中的空格字符不被视为标点符号(显然).

更新:事实证明,一个空格字符不会在这些情况下需要.例如,关键字标记和标识符标记必须由某个东西分隔,但该东西不必是空格字符.它可以是任何不是令牌(WhiteSpace,LineTerminatorComment)的输入元素.

另外......似乎空格字符被视为WhiteSpace输入元素,而不是令牌,这意味着它不是标点符号.

Cro*_*zin 1

在任何这些情况下都不需要空格。您只需编写解析器可以理解的语法即可。换句话说:机器必须知道您是否使用像functionor 这样的关键字new,或者只是定义另一个像 那样的变量newFunction

每个关键字都必须以某种方式分隔 - 空格是最明智和可读的,但是它们可以被替换:

return/**/false;
return(false);
Run Code Online (Sandbox Code Playgroud)