Skip to main content

小知识

快速判断变量是不是 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