1.前言
好久没有写原创文章了,最近工作不忙,写一点文章。
此篇文章意在读懂js的超能力,而不是滥用超能力
2.正文
位运算
1.使用左移运算符 << 迅速得出2的次方
1 << 2 // 2的2次方=>4
1 << 10 // 2的10次方=>1024
2. 使用 ^ 切换变量0或者1
// 第一种写法
if(val){
val = 0
}else{
val = 1
}
// 第二种写法
val = val ? 0 : 1
// 第三种写法
val ^= 1
3. 使用 & 判断奇偶
// 偶数 &1 = 0
// 奇数 &1 = 1
7 & 1 // ==> 1
8 & 1 // ==> 0
4. 使用 !! 转换布尔值
console.log(!!7) // true
console.log(!!0) // false
5. 取整超能力: ~~ >> << >>> |
console.log(~~11.5) // 11
console.log(11.5 >> 0) // 11
console.log(11.5 << 0) // 11
console.log(11.5 | 0) // 11
console.log(11.5 >>> 0) // 11 注:此操作符不可对负数取整
6. 使用 ^ 完成值交换
let a = 1;
let b = 2;
[a,b] = [b,a] // es6 写法
// 使用^写法
a ^= b
b ^= a
a ^= b
7. 使用 ^ 检查数字是否不相等
let a;
if(a !== 100){ ... }
// 等价于
if(a ^ 100){ ... }
8. 取随机字符串
Math.random().toString(16).substring(2,15)
// toString(16) 取随机字符串,substring 的第二个参数控制取多少位(最多13位)
9. 使用 .link() 创建链接
这里直接贴图
10. 一些可以替代undefined的操作
依旧直接贴图
11. array.length = 0 可以清空数组
// 包括我也比较喜欢用这个 没什么原因 就是骚
const arr = [1,2,3,4,5]
arr.length --
console.log(arr) // [1,2,3,4]
arr.length = 0
console.log(arr) // []
3. 结尾
js里面可以有很多我们臆想不到的骚操作,在平常的工作中偶尔会遇到一些,带着问题再去查询往往都会耽误不少的时间,如果可以掌握,那么就可以省下一部分时间用来摸鱼。
如有文章相关问题,敬请与我联系 wx:zhi794855679