在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,LineTerminator或Comment)的输入元素.
另外......似乎空格字符被视为WhiteSpace输入元素,而不是令牌,这意味着它不是标点符号.
在任何这些情况下都不需要空格。您只需编写解析器可以理解的语法即可。换句话说:机器必须知道您是否使用像functionor 这样的关键字new,或者只是定义另一个像 那样的变量newFunction。
每个关键字都必须以某种方式分隔 - 空格是最明智和可读的,但是它们可以被替换:
return/**/false;
return(false);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
424 次 |
| 最近记录: |