为多个变量赋值
// 常规写法
let a, b, c;
a = 5;
b = 8;
c = 12;
// 简写
let [a, b, c] = [5, 8, 12];
&& 短路求值
常规写法
let sum = 0
for (let i = 0; i < 5; i++) {
if (isEvent(i)) {
sum += i
}
}
function isEvent (n: number) {
if (n % 2 === 0) return true
return false
}
console.log('sum', sum)
简写
let sum = 0
for (let i = 0; i < 5; i++) {
isEvent(i) && (sum += i)
}
function isEvent (n) {
if (n % 2 === 0) return true
return false
}
console.log('sum', sum)
交换两个变量的值
let x = 'Hello', y = 55;
// 常规写法,引入第三个变量
const temp = x;
x = y;
y = temp;
// 简写,使用数组解构赋值
[x, y] = [y, x];
箭头函数
// 常规写法
function add(num1, num2) {
return num1 + num2;
}
// 简写
const add = (num1, num2) => num1 + num2;
多条件检查
// 常规写法
if (value === 1 || value === 'one' || value === 2 || value === 'two') {
// 执行一些代码
}
// 简写1
if ([1, 'one', 2, 'two'].indexOf(value) >= 0) {
// 执行一些代码
}
// 简写2
if ([1, 'one', 2, 'two'].includes(value)) {
// 执行一些代码
}
数组中的最大最小值
// 简写
const arr = [2, 8, 15, 4];
Math.max(...arr); // 最大值 15
Math.min(...arr); // 最小值 2
合并数组
let arr1 = [20, 30];
let arr2 = [60, 80]
// 常规写法
let arr3 = arr1.concat(arr2);
// [20, 30, 60, 80]
// 简写
let arr3 = [...arr1, ...arr2];
// [20, 30, 60, 80]
单层次对象的深拷贝
即没有嵌套对象,那么我们也可以使用展开操作符(...)进行深拷贝
let obj = { x: 20, y: 'hello' };
const cloneObj = { ...obj };
cloneObj.x = 200
console.log('obj', obj); //{ x: 20, y: 'hello' }
console.log('cloneObj', cloneObj); //{ x: 200, y: 'hello' }
可选链操作符
空值合并运算符
// 当 height 的值为 null 或 undefined 时,将 height 的值设置为 100
height = height ?? 100;