使用点符号和空格访问对象键

时间:2018-11-16 09:17:58

标签: javascript

我遇到了以下问题:

var object = {};
object.name = 'ABC';
console.log(object.     name); // this is still valid

注意object.

后的空格

这为什么有效?是否有任何ECMA规范?

对于不同数据类型的所有继承属性都相同。

我已经在节点终端上对此进行了测试。

谢谢!

1 个答案:

答案 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 itselfhere。从最后一个链接:

  

除空格和注释之外的其他输入元素构成ECMAScript语法语法的终端符号,称为ECMAScript标记。这些标记是ECMAScript语言的保留字,标识符,文字和标点符号。此外,行终止符尽管不被视为标记,但也成为输入元素流的一部分,并指导自动分号插入的过程(11.9)。 简单的空格和单行注释将被丢弃,并且不会出现在语法语法的输入元素流中。