可选链操作符(?.)用于访问可能为 null 或 undefined 的属性或方法,以避免出现错误。例如:
const person = {
name: 'John',
age: 30
};
const jobTitle = person.job?.title; // 如果 person.job 存在,则返回 job 的 title 属性,否则返回 undefined
空值合并操作符(??)用于提供默认值。当左侧的值为 null 或 undefined 时,将返回右侧的值。例如:
const name = person.name ?? 'Unknown'; // 如果 person.name 存在且不为 null 或 undefined,则返回 person.name,否则返回 'Unknown'
结合使用可选链操作符和空值合并操作符的例子:
const jobTitle = person.job?.title ?? 'Unknown';
在这个例子中,如果 person 对象中没有 job 属性,或者 job 对象中的 title 属性为 null 或 undefined,那么 jobTitle 将会被赋值为 ‘Unknown’。这样我们可以安全地访问属性并提供默认值。
1:array.includes(element, start)
判断一个数组中是否包含某个元素,array是要进行检查的数组,element是要查找的元素,start是可选参数,表示开始查找的位置,默认为0。
const names = ["abc", "cba", "nba", "why", NaN]
console.log(names.includes(NaN)) // true
2:平方运算符
在ES7之前,计算数字的平方需要通过
Math.pow
方法来完成。在ES7中,增加了**
运算符,可以对数字来计算平方。
const result1 = Math.pow(3, 3)
const result2 = 3 ** 3
console.log(result1, result2)
3:Object values
之前我们可以通过
Object.keys
获取一个对象所有的key,在ES8中提供了Object.values
来获取所有的value值。
const obj = {
name: "why",
age: 18,
height: 1.88
}
console.log(Object.values(obj)) // [ 'why', 18, 1.88 ]
// 如果传入一个字符串
console.log(Object.values("abc")) // [ 'a', 'b', 'c' ]
4:Object entries
通过
Object.entries
可以获取到一个数组,数组中会存放可枚举属性的键值对数组。
const obj = {
name: "why",
age: 18,
height: 1.88
}
console.log(Object.entries(obj)) // [ [ 'name', 'why' ], [ 'age', 18 ], [ 'height', 1.88 ] ]
for (const entry of Object.entries(obj)) {
const [key, value] = entry
console.log(key, value)
}
// 如果是一个数组
console.log(Object.entries(["abc", "cba", "nba"])) // [ [ '0', 'abc' ], [ '1', 'cba' ], [ '2', 'nba' ] ]
// 如果是一个字符串
console.log(Object.entries("abc")) // [ [ '0', 'a' ], [ '1', 'b' ], [ '2', 'c' ] ]
5:find()
find() 用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined。
const numbers = [1, 2, 3, 4, 5];
const result = numbers.find((num) => num > 3);
console.log(result); // 输出:4
6: filter()
filter()方法创建一个包含所有通过测试函数的元素的新数组。如果没有元素满足测试函数,则返回一个空数组。
const numbers = [1, 2, 3, 4, 5];
const result = numbers.filter(function(num) {
return num > 3;
});
console.log(result); // 输出:[4, 5]
7:some()
some 为数组中的每一个元素执行一次 callback 函数,直到找到一个使得 callback 返回一个“真值”(即可转换为布尔值 true 的值)。如果找到了这样一个值,some 将会立即返回 true。
const numbers = [1, 2, 3, 4, 5];
const result = numbers.some(function(num) {
return num > 3;
});
console.log(result); // 输出:true
8:every()
every()方法用于检查数组中的所有元素是否都满足指定条件。它返回一个布尔值。
const numbers = [1, 2, 3, 4, 5];
const result = numbers.every(function(num) {
return num > 0;
});
console.log(result); // 输出:true
9:map()
map()用于对数组中的每个元素执行指定操作,并返回一个新的数组,新数组的元素是对原数组元素操作后的结果。
const numbers = [1, 2, 3, 4, 5];
const result = numbers.map(function(num) {
return num * 2;
});
console.log(result); // 输出:[2, 4, 6, 8, 10]