Javascript EcmaScript是否有任何规则规定在解析过程中空格对编译器很重要

Javascript EcmaScript是否有任何规则规定在解析过程中空格对编译器很重要,javascript,ecmascript-6,Javascript,Ecmascript 6,Python使用空格表示块: for x in range(0, 50): print x 在JavaScript中,我们使用大括号来实现这一目的: for (x in range(0, 50)) { print(x) } 我想知道在解析程序和创建AST时,空格在EcmaScript中是否有任何意义 我已经查看了TypeScript编译器的源代码,在解析源代码时似乎忽略了空格。正如@Bergi所指出的,空格在词法分析过程中非常重要,它允许扫描程序知道特定标记何时结束。例如,这就是允许

Python使用空格表示块:

for x in range(0, 50):
    print x
在JavaScript中,我们使用大括号来实现这一目的:

for (x in range(0, 50)) { print(x) }
我想知道在解析程序和创建AST时,空格在EcmaScript中是否有任何意义


我已经查看了TypeScript编译器的源代码,在解析源代码时似乎忽略了空格。

正如@Bergi所指出的,空格在词法分析过程中非常重要,它允许扫描程序知道特定标记何时结束。例如,这就是允许区分新对象和新对象的原因。对于可能不包含空格的产品,这一点很重要。例如,因为空间不能从中派生,所以它标志着空间的结束。空白也被定义为所有目标符号的单独产物,从最简单的InputElementDiv开始:

在语法分析过程中,只有行结束符对于自动分号插入过程很重要。其余空白部分不相关。以下是报价:

此外,行终止符虽然不被视为令牌,但也 成为输入元素流的一部分,并指导 自动分号插入11.9。简单空白和 单行注释将被丢弃,不会出现在注释流中 句法语法的输入元素


自动分号插入是我能想到的唯一一个使空白在JS中具有任何意义的例子:@pawel,我在规范中找到了相关部分。只有行终止符才重要。我已经添加了我自己的答案。当然,空格很重要:它分隔令牌!你说的是换行和缩进吗?@Bergi,我说的是空格和制表符。这是什么意思?当扫描器识别标记时,它不使用空格,我更愿意将其放在不包含空格的产品中,因为它很重要。如中所定义,空格基本上充当它们之间的分隔符。
InputElementDiv::
    WhiteSpace