运算符
算数运算
| 符号 |
含义 |
| + |
加 |
| - |
减 |
| * |
乘 |
| / |
除 |
| % |
取余 |
| ++ |
自增 |
| -- |
自减 |
| ** |
指数(ES 6) |
console.log(2 ** 4);
console.log(2 ** 3 ** 2)
赋值运算
| 符号 |
含义 |
| = |
赋值 |
| +=、-=、*=、/=、%= |
运算赋值 |
关系运算
严格相等不会自动的类型转化,要求数据类型一致,值相等,而非严格相等则是数据类型会自动转化,在进行等值比较,严格不相等和非严格不相等同理
对于原始数据类型的关系运算就是值比较,而对于复合数据类型比较的是地址,要注意的是若两个地址不相等则不管什么关系运算都是返回 false
对于 null 和 undefined 两个特殊值,他们就想常量一样,自身与自身严格相等,所以两个都位初始化的变量存的都是 undefined,所以两个未赋值的变量严格相等
console.log(1 == true)
console.log([1, 2] == "1,2")
console.log(1 === 1.0);
var obj1 = {};
var obj2 = {};
console.log(obj1 > obj2);
console.log(obj1 < obj2);
console.log(obj1 == obj2);
console.log(obj1 === obj2);
console.log(undefined === undefined);
console.log(null === null);
console.log(null == undefined);
console.log(null === undefined);
var v1;
var v2;
console.log(v1 == v2);
console.log(v1 === v2);
| 符号 |
含义 |
| > |
大于 |
| >= |
大于等于 |
| < |
小于 |
| <= |
小于等于 |
| != |
不等于 |
| !== |
严格不相等 |
| == |
等于 |
| === |
严格相等 |
逻辑运算
位运算
| 符号 |
含义 |
| & |
按位与 |
| | |
按位或 |
| ^ |
按位异或 |
| ~ |
按位取反 |
| << |
按位左移 |
| ">>" |
按位右移(补符号位) |
| ">>>" |
无符号按位右移(补 0) |
条件运算符
| 符号 |
含义 |
| ?: |
条件为真返回第一表达式,反正返回第二个 |
操作符
| 符号 |
含义 |
| typeof |
返回变量数据类型 |
| void |
执行表达式,不返回或说返回 undefined |
| delete 属性 |
删除对象属性,并返回是否删除成功 |
| 属性 in 对象 |
判断对象是否具有该属性,包括继承的 |
| 对象 instanceof 类 |
判定对象是否是类或该类子类产生的 |
运算符的优先级
| 优先级 |
运算符 |
结合性 |
| 1 |
( ) [ ] . |
从左到右 |
| 2 |
! ~ ++ -- typeof void delete |
从右到左 |
| 3 |
* / % |
从左到右 |
| 4 |
+ - |
从左到右 |
| 5 |
<< >> >>> |
从左到右 |
| 6 |
< <= > >= in instanceof |
从左到右 |
| 7 |
== != === !== |
从左到右 |
| 8 |
& |
从左到右 |
| 9 |
^ |
从左到右 |
| 10 |
| |
从左到右 |
| 11 |
&& |
从左到右 |
| 12 |
|| |
从左到右 |
| 13 |
?: |
从左到右 |
| 14 |
= += -= *= /= %= &= |= ^= ~= <<= >>= >>>= |
从右到左 |
| 15 |
, |
从右到左 |
单算移关与,异或逻条赋
括号级别最高,逗号级别最低,单目 > 算术 > 位移 > 关系 > 逻辑 > 三目 > 赋值。
Comments NOTHING