04-运算符

nobility 发布于 2022-09-12 01-ES5 2219 次阅读


运算符

算数运算

符号 含义
+
-
*
/
% 取余
++ 自增
-- 自减
** 指数(ES 6)
console.log(2 ** 4);	//16
console.log(2 ** 3 ** 2)	//512,右结合性

赋值运算

符号 含义
= 赋值
+=、-=、*=、/=、%= 运算赋值

关系运算

严格相等不会自动的类型转化,要求数据类型一致,值相等,而非严格相等则是数据类型会自动转化,在进行等值比较,严格不相等和非严格不相等同理

对于原始数据类型的关系运算就是值比较,而对于复合数据类型比较的是地址,要注意的是若两个地址不相等则不管什么关系运算都是返回 false

对于 null 和 undefined 两个特殊值,他们就想常量一样,自身与自身严格相等,所以两个都位初始化的变量存的都是 undefined,所以两个未赋值的变量严格相等

console.log(1 == true)	// true
//等同于1 === Number(true)或Boolean(1) === true
console.log([1, 2] == "1,2") // true
// 等同于String([1, 2]) === '1,2'


console.log(1 === 1.0);	//true,都是数值类型

var obj1 = {};
var obj2 = {};
console.log(obj1 > obj2);   //false
console.log(obj1 < obj2);   //false
console.log(obj1 == obj2);  //false
console.log(obj1 === obj2); //false

console.log(undefined === undefined);   //true
console.log(null === null); //true
console.log(null == undefined); //true
console.log(null === undefined);    //false

var v1;
var v2;
console.log(v1 == v2);  //true
console.log(v1 === v2); //true
符号 含义
> 大于
>= 大于等于
< 小于
<= 小于等于
!= 不等于
!== 严格不相等
== 等于
=== 严格相等

逻辑运算

符号 含义
&& 短路与
|| 短路或

位运算

符号 含义
& 按位与
| 按位或
^ 按位异或
~ 按位取反
<< 按位左移
">>" 按位右移(补符号位)
">>>" 无符号按位右移(补 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 , 从右到左

单算移关与,异或逻条赋

括号级别最高,逗号级别最低,单目 > 算术 > 位移 > 关系 > 逻辑 > 三目 > 赋值。

加油啊!即便没有转生到异世界,也要拿出真本事!!!\(`Δ’)/
最后更新于 2022-09-12