使用^切换变量 0 和 1
// 假如我们通过某个条件来切换一个值为0或1
// if判断
if (toggle) {
toggle = 0;
} else {
toggle = -1;
}
使用 & 判断奇偶性
奇数的二进制最后一位必然为1,所以任意一个奇数 & 1 一定等于1
偶数 & 1 = 0
奇数 & 1 = 1
console.log(2 & 1); // 0
console.log(3 & 1); // 1
使用 !! 强制转为布尔值
// 特殊值 undefined, null, 0, -0, NaN, "" 都为false
console.log(!!-3); // true
console.log(!!'字符串'); // true
使用+-*/强制转为Number
let num1 = +'1234'; // Number
let num2 = '1234' - 0; // Number
let num3 = '1324' * 1; // Number
let num4 = '1234' / 1; //Number
使用 ~、>>、<<、>>>、| 来取整
// 重要字符
let b = Array(6).join(0); // '000000'7
let c = Array(6).join('串'); // '串串串串串串'
// ES6
let d = '0'.repeat(7); // '0000000'
// 清空数组
let arr = [1, 2, 3, 4, 5, 6]
arr.length = 0 // []
// Array.slice() Array.concat() 实现数组浅拷贝
let arr1 = [1, 2, 3, 4, 7, 8]
let arr2 = arr1.slice() // [1, 2, 3, 4, 7, 8]
let arr3 = arr1.concat() // [1, 2, 3, 4, 7, 8]
Boolean过滤驻足中的所有假值
let arr = [0, 1, false, 2, '', 'qwe', 'e' * 12, NaN, undefined, -2, 45]
let newArr = arr.filter(Boolean)
console.log(newArr); // [1, 2, 'qwe', -2, 45]
JS || && 妙用 if else选择情况
// if else
var str_level = 0;
if (str_name == 'life) {
str_level = 1;
} else if (str_name == 'is') {
str_level = 2;
} else if (str_name == 'a') {
str_level = 3;
} else if (str_name == 'game') {
str_level = 4;
} else {
str_level = 0;
}
// switch
var = str_level = 0;
switch (str_name) {
case 'life': str_level = 1;
break;
case 'is': str_level = 1;
break;
case 'a': str_level = 1;
break;
case 'game': str_level = 1;
break;
default: str_level = 0;
break;
}
// && ||
var str_level =
(str_name == 'life' && 1) ||
(str_name == 'is' && 2) ||
(str_name == 'a' && 3) ||
(str_name == 'game' && 4) ||
0;
// ---最优---
function getLevel(str_name) {
return (
{
'life': 1,
'is': 2,
'a': 3,
'game': 4
}[str_name] || 0;
)
}
通过字符串比较时间先后
var a = '2020-12-12';
var b = '2020-12-13';
console.log(a > b, a < b) // false true
console.log('21:00' < "09:10") // false
console.log('21:00' < '9:10') // true 时间形式注意补0