[英]Accessing object key with dot notation and space
我遇到以下问题:
var object = {};
object.name = 'ABC';
console.log(object. name); // this is still valid
注意object.
后的空格object.
为什么这样有效? 是否有任何ECMA规范?
对于不同数据类型的所有继承属性也是如此。
我已经在节点终端上对此进行了测试。
谢谢!
为什么这样有效?
因为空格在JavaScript语法中很大程度上 (尽管不是全部)无关紧要。 您可以安全地在两个标记之间插入一个除换行符以外的空格(并且在大多数(但不是全部)情况下,您也可以插入换行符;“大多数”是由于ASI引起的)。 您不能在令牌中插入空格(因为它将空格分成两个令牌),但是您可以在令牌之间插入空格。
随着费德里科求职信Culloca指出( 链接 ) .
是运算符,就像+
或*
。 通常,我们通常不会在其周围放置空格,而是在其周围放置空格,这只是惯例。
这些都是有效的:
console.log(object.name);
console.log(
object.name
);
console.log(
object . name
);
console.log(
object
.
name
);
是否有任何ECMA规范?
当然, 规范本身 。 具体在这里和这里 。 从最后一个链接:
除空格和注释之外的其他输入元素构成ECMAScript语法的终端符号,称为ECMAScript标记。 这些标记是ECMAScript语言的保留字,标识符,文字和标点符号。 此外,行终止符尽管不被视为标记,但也成为输入元素流的一部分,并指导自动分号插入的过程(11.9)。 简单的空格和单行注释将被丢弃,并且不会出现在语法语法的输入元素流中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.