JavaScript骚操作之操作符

三目运算符 ?:

1
2
3
4
5
if (hasMoney) {
console.log('周末嗨翻天');
} else {
console.log('周末睡一天');
}
1
hasMoney ? console.log('周末嗨翻天') : console.log('周末睡一天');
1
let weekendPlan = hasMoney ? '周末嗨翻天' : '周末睡一天';

逻辑与操作符 &&

1
2
3
if (hasMoney) {
console.log('周末嗨翻天');
}
1
hasMoney ? console.log('周末嗨翻天') : undefined;
1
hasMoney && console.log('周末嗨翻天');
1
2
3
4
5
true && console.log('It is true');                         // It is true
true && false && console.log('It is true'); // 返回 false
true && 0 && console.log('It is true'); // 返回 0
true && undefined == null && console.log('It is true'); // It is true, 表达式undefined == null的运算结果为true
true && undefined === null && console.log('It is true'); // 返回 false, 表达式undefined === null的运算结果为false

逻辑或操作符 ||

1
2
// 当自身为undefined时,赋值为0,否则还是赋值为自身
val = val !== undefined ? val : 0;
1
val = val || 0;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// ES5设置函数默认值
function testFunc(arg1) {
arg1 = arg1 || 1;

// do something else
}

let a = 1,
b = 2,
c = null;

console.log(a || b || c); // 1
console.log(0 || b || c); // 2
console.log(0 || false || c); // null

按位取反操作符 ~

1
2
3
let arr = ['we', 'are', 'the', 'BlackGold', 'team'];

arr.includes('the') && console.log('in'); // in
1
2
3
let arr = ['we', 'are', 'the', 'BlackGold', 'team'];

arr.includes(element => element === 'the') && console.log('in'); // 返回false
1
2
3
let arr = ['we', 'are', 'the', 'BlackGold', 'team'];

arr.findIndex(element => element === 'the') !== -1 && console.log('in'); // in
1
2
3
4
let arr = ['we', 'are', 'the', 'BlackGold', 'team'];

~arr.findIndex(element => element === 'we') && console.log('in'); // in
~arr.findIndex(element => element === 'the') && console.log('in'); // in
1
2
3
console.log(~-1);       // 0 转换为Boolean值即为false
console.log(~0); // -1 转换为Boolean值即为true
console.log(~1); // -2 转换为Boolean值即为true
-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!