JS运算符优先级(从高到低列出)

JavaScript016

JS运算符优先级(从高到低列出),第1张

. [] ()    字段访问、数组下标、函数调用以及表达式分组

++ -- - ~ ! delete new typeof void     一元运算符、返回数据类型、对象创建、未定义值

* / %    乘法、除法、取模

+ - +    加法、减法、字符串连接

<<>>>>>移位

<<= >>= instanceof  小于、小于等于、大于、大于等于、instanceof

== != === !==    等于、不等于、严格相等、非严格相等

&   按位与

^    按位异或

|     按位或

&&  逻辑与

||     逻辑或

?:    条件

= oP=  赋值、运算赋值

,      多重求值

基于segmentfault上的一道题

由此可以知道new 的优先级带参数的比不带的高

在第三种解析中我们要计算 new (foo.prototype.getName)() 的值,首先要明白new到底做了什么,其实就做了3件事

第一步:创建一个空对象

第二步:绑定该对象的原型

第三部:调用构造函数 // 执行了构造函数的内容

所以在 new (foo.prototype.getName)() 也就会返回foo.prototype.getName的一个实例,并且执行一次构造函数,也就是执行 console.log(3) ,打印3这个结果