你可能从未使用过的11个JavaScript特性(小结)
1.Array.prototype.includes()
用于判断数组是否包含某个元素,返回布尔值。
let fruits = ['apple', 'banana', 'mango']; console.log(fruits.includes('banana')); // true
2.Object.is()
判断两个值是否严格相等,与===
不同之处在于它能正确处理NaN
。
console.log(Object.is(NaN, NaN)); // true console.log(NaN === NaN); // false
3.String.prototype.padStart()
和String.prototype.padEnd()
用于在字符串的开头或结尾填充字符,直到达到指定的长度。
let str = "hello"; console.log(str.padStart(10, "*")); // "*****hello" console.log(str.padEnd(10, "*")); // "hello*****"
4.Promise.allSettled()
等待所有给定的promise完成,无论它们是fulfilled还是rejected。
Promise.allSettled([fetch('/api/data'), fetch('/api/other')]) .then(results => results.forEach(result => console.log(result.status)));
5.Optional chaining (?.)
如果对象为null或undefined,则表达式短路返回undefined。
let user = null; console.log(user?.name); // undefined
6.Nullish coalescing operator (??)
如果左侧的操作数是null或undefined,则返回右侧的操作数;否则返回左侧操作数。
let foo = null ?? "default"; console.log(foo); // "default"
7.BigInt
表示任意精度的整数。
let bigInt = BigInt("9007199254740991"); bigInt++; console.log(bigInt); // 9007199254740992n
8.Symbol
创建独一无二的标识符,可以用作对象属性的键。
let sym = Symbol("unique"); let obj = { [sym]: "value" }; console.log(obj[sym]); // "value"
9.Object.fromEntries()
将一个键值对列表转换为对象。
let entries = [["name", "Alice"], ["age", 25]]; let obj = Object.fromEntries(entries); console.log(obj); // { name: "Alice", age: 25 }
10.Array.prototype.flat()
将多维数组“拉平”为一维数组。
let arr = [1, [2, [3, [4]], 5]; console.log(arr.flat()); // [1, 2, 3, 4, 5]
11.Dynamic import()
动态导入模块,返回一个promise。
import('/path/to/module.js') .then(module => { console.log(module.functionName()); }) .catch(err => console.error(err));
相关问题与解答
Q1:什么是BigInt
,它与普通的整数有什么区别?
A1:BigInt
是一种内置对象,它提供了一种方法来表示大整数,即超出JavaScript安全整数范围的数字,普通的整数(Number类型)在JavaScript中是基于IEEE 754标准的双精度浮点格式,这限制了它们只能安全地表示(2^53 1)到2^53 1之间的整数。BigInt
则没有这个限制,可以表示任意大小的整数,只受限于可用内存。
Q2:Array.prototype.flat()
是如何工作的?它可以接收参数吗?
A2:Array.prototype.flat()
方法会按照指定的深度递归遍历数组,并将所有元素与最内层的子数组合并成一个新数组,如果不传递任何参数,默认深度为1,这意味着它将扁平化一层嵌套,如果传递了一个整数作为参数,它会扁平化指定深度的嵌套。arr.flat(2)
将会扁平化两层深度的嵌套数组。
到此,以上就是小编对于“你可能从未使用过的11 个JavaScript特性(小结)”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。