一、短路求值
从左到右进行逻辑运算,如果不满足条件,则立即终止。后面的计算不会继续。
const a = 4;
// 普通写法
if (a > 4) {
console.log(a)
}
// 优化写法
(a > 4) && console.log(a)
let b = '';
// 普通写法
if (!b) {
b = 2
}
// 优化写法
b = b || 2
console.log(b)
二、交换变量
- 赋值解构法:交换任意变量
let a = 1;
let b = 2;
[a, b] = [b, a]
console.log(a) // 2
console.log(b) // 1
- 异或位运算:只能交换数值
let a = 1;
let b = 2;
a = a ^ b // 3
b = a ^ b // 1
a = a ^ b // 2
console.log(a) // 2
console.log(b) // 1
三、按位非运算
例子:~2的运算结果,可以理解为 -(2+1),也就是 -(x+1)
const str = 'word';
// 简写 str.indexOf('o') !== -1
if (~str.indexOf('o')) {
console.log('包含')
} else {
console.log('不包含')
}