小知识
快速判断变量是不是 null 或 undefined 或长度为零
if (value) {
}
下面这些值都会返回 false
- null
- ""
- undefined
- 0
- false
- NaN
判断对象是否有效,无效则取另一对象属性
假设用户在 IE8 中使用,那么响应函数被触发时,浏览器不会传递事件对象, 事件对象将会作为 window 对象的属性保存
div.onmousemove = function (event) {
// 更优雅的写法
event = event || window.event;
let x = event.clientX;
};
合并数组
你可以使用传播运算符(...)将一个数组的元素扩展为另一个数组,例如:
const numbers = [10, 20, 30, 40];
const allNumbers = [...numbers, 50, 60, 70, 80];
console.log(allNumbers); // [10, 20, 30, 40, 50, 60, 70, 80]
删除重复项
const numbers = [1, 1, 20, 3, 3, 3, 9, 9];
const uniqueNumbers = [...new Set(numbers)];
console.log(uniqueNumbers); // [1, 20, 3, 9]
交换两个变量
let x = 1;
let y = 2;
[x, y] = [y, x];
console.log(x, y); // 2 1
数字/字符串相互转换
const num = 1 + "";
console.log(typeof num); // string
console.log(num); // 1
const numStr = "124";
const num = +numStr;
console.log(typeof num); // number
console.log(num); // 124
将字符串拆成数组
// 要将字符串拆分为数组,可以使用扩展运算符(...)
const str = "Test";
const strAsArr = [...str];
console.log(strAsArr); // ["T", "e", "s", "t"]
可选链接
/*假设你有一个data对象,并且想要安全地访问data.test.value。首先,你需要检查:
data 是否被定义。
data.test 是否被定义。*/
const data = { test: { value: 1 } };
// 之前的写法
if (data && data.test) {
console.log(data.test.valu); // 1
}
// 使用可选链接的写法,再也不用担心取值报错而中断方法了
const value = data?.test?.value;
console.log(value); // 1
console.log(data?.info?.item); // undefined