逻辑运算符简化条件判断
# 省略写法condition1 && condition2();# 相当于if(condition1){condition2()}
# 省略写法var a = b&&1;# 相当于if(b){a = 1;}else{a=b;}
# 省略写法condition1 || condition2() // 如果条件1不存在 则执行条件2 娄底写法var a = b||1;# 相当于if(b){a = b}else{a=1}
数组浅拷贝
let arr = [1,2,3];let arr1 = arr; // ❌ 修改arr1会改变arr,比如往arr1里push数据// right:✅arr2 = arr.slice();arr3 = arr.concat();arr4 = [...arr];arr5 = Array.from(arr);
初始化数组
申请长度为n的数组,并且数组所有元素初始化为1
let arr1 = Array.from({length: n}, _ => 1);let arr2 = new Array(n).fill(1);let arr3 = Array.from({length: 1000}, (item, index) => index);# 不推荐:let arr4 = new Array(1000).fill(1).map((item, index) => index);
不过用这个方法生成二维数组的时候,前方有坑
# 二维矩阵的生成let mark = new Array(n+1).fill([]);# 实际上fill的那个数组 是 指向一个地址
解决办法:=> 使用Array.from({ length: n+1 }, () => ([]));
变量赋值
const [a, b, c, d, e] = [1, 2, 3, 4, 5]; // a=1,b=2,c=3,d=4,e=5
变量交换
let x = 1,y = 2;# 利用解构[x, y] = [y, x];# 位运算异或 (只能进行数字的交换a^=b:b^=a:a^=b:# 普通版 第三方变量let temp = a;a = b;b = temp;
