一、运算符优先级
从高到低
运算符 | 说明 |
() | 圆括号 |
. [] new(带参数列表) | 字段访问、数组索引、new(带参数列表) |
() new(无参数列表) | 函数调用,无参数列表 |
++(后置递增) --(后置递减) | 自增、自减 |
++(前置递增) --(前置递减) - + ~ ! delete typeof void | 一无运算符、返回数据类型、对象创建、未定义的值 |
* / % | 相乘、相除、求余 |
+ - + | 相加、相减、字符串相加 |
<< >> >>> | 位移 |
< <= > >= instanceof | 小于、小于或等于、大于、大于或等于、是否为特定类的实例 |
== != === !== | 相等、不相等、全等、不全等 |
& | 按位“与” |
^ | 按位“异或” |
| | 按位“或” |
&& | 逻辑“与” |
|| | 逻辑“或" |
?: | 条件运算符 |
= OP= | 赋值、赋值去处(+=、-=) |
yield、yield* | 迭代标记运算符 |
... | 展开运算符 |
, | 多个计算,逗号运算符 |
二、类型检测与转换
以下都是规范中的内部方法,不可直接调用
方法 | 说明 |
ToPrimitive | 两个参数:值、期望类型。转换为指定的类型 |
ToBoolean | 转换为boolean值,如果参数是undefined、Null、0、NaN、或者String长度为零,结果为false,object或其他为true |
ToNumber | 转换为数值类型 |
ToInteger | 转换为整型,应该是16类整型 |
ToInt32 | 32位有符号整型 |
ToUint32 | 32位无符号整型 |
ToUint16 | 16位无符号整型 |
ToString | 转换为字符串类型,如果Number类型,转换特殊处理。浮点数精度 |
ToObject | 转换为对象类型 |
CheckObjectCoercible | 检测参数是否可以通过ToObject转换 |
IsCaller | 检测参数是否为一个可调用对象,Object有call方法实现的才行,其他(Number\Boolean\String\Null\Undefined)等不行 |
SameValue | 两个对象是否相等的算法 |
提供的方法,可以直接调用
方法 | 说明 |
parseInt | 转换为整型,两个参数:一个数为可转换为数值的内容,第二个参数表示进制:2, 8, 10, 16,默认10进制。但如果第一个参数的值以0x或0X开头则认为是16进行 |
parseFloat | 转换为一个浮点型数值 |
IsNaN | 判断值是否为NaN,是NaN则为false |
IsFinit | 判断值是为NaN、+Max、+Min,是NaN、+Max、+Min则为false |
P:
2017-05-02
修正运算符优先级列表