我遇到了以下问题:
var object = {};
object.name = 'ABC';
console.log(object. name); // this is still valid
注意object.
这为什么有效?是否有任何ECMA规范?
对于不同数据类型的所有继承属性都相同。
我已经在节点终端上对此进行了测试。
谢谢!
答案 0 :(得分:7)
这为什么有效?
因为空格很大(尽管完全不是)与JavaScript语法无关。您可以安全地在两个标记之间插入一个除换行符以外的空格(在大多数情况下,但并非,您也可以插入换行符;“最多”是由于{{3} }。您不能在标记中插入空格( (因为它将它们分成两个标记),但是可以在标记之间 。
ASI指出(Federico klez Culloca),.
是运算符,就像+
或*
一样。通常,我们通常不会在其周围放置空格,而是在其周围放置空格,这只是惯例。
这些都是有效的:
console.log(object.name);
console.log(
object.name
);
console.log(
object . name
);
console.log(
object
.
name
);
对此有任何ECMA规范吗?
当然是link。特别是the specification itself和here。从最后一个链接:
除空格和注释之外的其他输入元素构成ECMAScript语法语法的终端符号,称为ECMAScript标记。这些标记是ECMAScript语言的保留字,标识符,文字和标点符号。此外,行终止符尽管不被视为标记,但也成为输入元素流的一部分,并指导自动分号插入的过程(11.9)。 简单的空格和单行注释将被丢弃,并且不会出现在语法语法的输入元素流中。