【问题标题】:Difference between 1.constructor and (1).constructor [duplicate]1.constructor 和 (1).constructor 的区别
【发布时间】:2018-08-05 21:19:53
【问题描述】:

为什么(1).constructor 返回ƒ Number() { [native code] },而1.constructor 返回Uncaught SyntaxError: Invalid or unexpected token

两者之间有什么区别以及幕后究竟发生了什么?

【问题讨论】:

  • (1) 创建一个计算结果为数字的表达式。希望这次我做对了。
  • 解析器是贪婪的,它从输入中获取尽可能多的信息,而它解析的表达式仍然是正确的。当它解析1.constructor 时,1. 是一个有效的浮点数,后跟constructor,这违反了语法规则。另一方面,(1) 是一个表达式,在括号之间包含数字 1. 不再被解释为小数点。

标签: javascript object constructor numbers prototype


【解决方案1】:

您的数字是数字文字的一部分。数字文字中的第一个.浮点,而不是属性引用的开始。

你可以看到这个in the spec

DecimalIntegerLiteral . DecimalDigits opt ExponentPart opt

通过将数字文字括在括号中,将其与. 分开,因此. 不会被视为数字文字的一部分(因此可用于读取结果对象的属性)。

【讨论】:

猜你喜欢
  • 2015-05-13
  • 2018-03-01
  • 2019-08-20
  • 2019-01-10
  • 2011-07-09
  • 1970-01-01
  • 1970-01-01
  • 2016-01-14
  • 1970-01-01
相关资源
最近更新 更多