持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情
前言
之前刷LeetCode有序数组的平方的时候,我把按位异或^
符号当作了幂运算符,找了半天没找到哪儿错了,后来把题解打开一行一行的看,发现就只有求平方的那一行不一样,最后查看资料才发现,在计算器中^
符号才是幂运算符。今天就来我就带大家来复习一下JS操作符。
1.递增/递减操作符,分为加减号在前和加减号在后两种。
// 加减号在数字后,先赋值后计算,即语句先求值后变量才计算加减
let a = 12
let b = 10
let sum = a ++ + b
console.log(a,sum) // 13 22
// 加减号在数字前,先计算后赋值,即先计算变量后再求语句值
let a = 12
let b = 10
let sum = ++ a + b
console.log(a,sum) // 13 23
2.加减乘除运算
加减乘除没什么好讲的,这里说一下我曾经一直把除号(/)当成整除,好像在C语言中5/2 = 2
这里讲下js取整运算
Math.ceil() 向上取整
Math.floor() 向下取整
Math.round() 四舍五入
parseInt() 取整
3.位运算符
1.按位非(~)
计算方法:数值取反减一
let num = 100
console.log(~num) // -101
2.按位与(&)
计算方法:对二进制的每一位进行与操作,都是1才是1,否者为0
let num1 = 8 // 1000
let num2 = 12 // 1100
console.log(num1&num2) // 1000 -> 8
3.按位或(|)
计算方法: 对二进制的每一位进行或运算,都是0为0,否者为
let num1 = 10 // 1010
let num2 = 5 // 0101
console.log(num1|num2) // 1111 -> 15
4.按位异或(^)
计算方法:对二进制的每一位进行异或运算,同位相同为1,不同为0
let num1 = 10 // 1010
let num2 = 6 // 0110
console.log(num1^num2) // 1100 -> 12
5.左移(<<)
二进制所有位向左移动,后面补0,符号位不变
2>>5 10 ---> 1000000 64
-2 >> 5 -64
6.有符号右移(>>)
二进制所有位向右移动,保留符号
64 >> 5 ---> 2
7.无符号右移(>>>)
正数的无符号右移和有符号右移一样
负数的无符号右移差别很大,
-64 >> 5 = 134217726
4.逻辑运算符
1.逻辑非(!) 取反操作符
对象取反 --> false
空字符串取反 --> true
非空字符串取反 ->> false
0取反 --> true
非零取反 --> false
null、undefined、NaN取反 --> true
2.逻辑与(&&) 同真即真,其余都为false
1&&1 true
1&&0 false
3.逻辑或(||) 一真即真,同假为false
true || false --> true
false || false --> false
5. 幂运算
**
运算符与Math.pow()
的结果一样
3**2 // 9
Math.pow(3,2) // 9
6.比较运算符
大于(>)、小于(<)、大于等于(>=)、小于等于(<=)
1.如果左右都为数字,按数值比较
2.如果为字符串,按位进行字符串编码比较
3.如果有任一为数字,则将不是数字的转化为数字再比较
4.如果有任一为对象,则执行valueOf()后再比较
5.如果有任一为布尔值,则转化为数字比较
7.相等操作符
分为(==)(!=)
1.如果任一操作数是布尔值,则转化为数字再比较
1 == true // true
2.如果一个为数字,另一个为字符串,则将字符串转化为数字再比较
1 == '1' // true
3.如果一个是对象,另一个不是,则把取对象的valueof取原始值,再按上面的规则比较
[] == {} //false
[] == "" // true
4.null和undefined相等,但和其他不相等
null == undefined // true
null == 0 // false
undefined == 0 // false
(===)(!==) 全等和不全等除了比较值还要比较值类型
1 === '1' // false
55 != '55' // false 转化后相等
55 !== '55' // true 类型不相等
以上就是今天的所有内容,点个赞支持一下,感激不尽。