为什么"new Date().toString()"能够工作,考虑到JavaScript的运算符优先级?

8 浏览
0 Comments

为什么"new Date().toString()"能够工作,考虑到JavaScript的运算符优先级?

根据MDN的说法,JavaScript中有两个具有最高优先级的运算符:

  • 左结合的成员运算符:foo.bar
  • 右结合的new运算符:new Foo()

我通常明确地将这两个操作符分开:(new Date()).toString()

但是我经常看到它们合并在一起:new Date().toString()

根据这个答案,第二种方式能够工作的原因是当两个操作符具有相同优先级时,第二个操作符的结合性是重要的。在这种情况下,成员运算符是左结合的,这意味着new Date()会先被计算。

然而,如果是这样的话,为什么new Date.toString()会失败呢?毕竟,new Date只是new Date()语法糖。上述论点说它应该能够工作,但显然并不行。

我漏掉了什么?

0