为什么"new Date().toString()"能够工作,考虑到JavaScript的运算符优先级?
- 论坛
- 为什么"new Date().toString()"能够工作,考虑到JavaScript的运算符优先级?
8 浏览
为什么"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()
的语法糖。上述论点说它应该能够工作,但显然并不行。
我漏掉了什么?