ES7(ECMAScript 2016)
1. 数组的includes方法
- 解释:
Array.prototype.includes()
方法用于判断一个数组是否包含一个指定的值,根据情况返回true
或false
。 - 示例:
const array = [1, 2, 3, 4, 5];
console.log(array.includes(3)); // 输出: true
console.log(array.includes(6)); // 输出: false
2. 指数运算符()**
- 解释:指数运算符
**
用于计算一个数的幂,相当于Math.pow()
方法。 - 示例:
console.log(2 ** 3); // 输出: 8
console.log(Math.pow(2, 3)); // 输出: 8
ES8(ECMAScript 2017)
1. 异步函数(async/await)
- 解释:
async
和await
关键字用于编写异步代码,使异步操作更加简洁和易于理解。async
函数返回一个Promise
对象,而await
关键字用于等待Promise
的结果。 - 示例:
async function fetchData() {
try {
const response = await fetch('https://jsonplaceholder.typicode.com/todos/1');
const data = await response.json();
console.log(data);
} catch (error) {
console.log(error);
}
}
fetchData();
2. Object.values() 和 Object.entries()
- 解释:
Object.values()
方法返回一个给定对象自身的所有可枚举属性值的数组,而Object.entries()
方法返回一个给定对象自身可枚举属性的键值对数组。 - 示例:
const obj = { a: 1, b: 2, c: 3 };
console.log(Object.values(obj)); // 输出: [1, 2, 3]
console.log(Object.entries(obj)); // 输出: [['a', 1], ['b', 2], ['c', 3]]
3. 字符串的padStart()和padEnd()方法
- 解释:
padStart()
方法在当前字符串的开头填充指定的字符串,直到达到指定的长度。padEnd()
方法在当前字符串的末尾填充指定的字符串,直到达到指定的长度。 - 示例:
console.log('abc'.padStart(10, 'x')); // 输出: "xxxxxxxabc"
console.log('abc'.padEnd(10, 'x')); // 输出: "abcxxxxxxx"
4. Object.getOwnPropertyDescriptors()
- 解释:
Object.getOwnPropertyDescriptors()
方法返回指定对象所有自身属性的描述符。 - 示例:
const obj = { a: 1, b: 2 };
Object.defineProperty(obj, 'c', {
value: 3,
writable: false,
enumerable: false,
configurable: true
});
console.log(Object.getOwnPropertyDescriptors(obj));
// 输出包含a、b、c三个属性的描述符对象
5. 函数参数列表和函数调用中的尾逗号(Trailing commas)
- 解释:ES8 允许在函数参数列表和函数调用中使用尾逗号,提高了代码的可读性和可维护性。
- 示例:
function foo(a, b, c,) {
// 函数体
}
foo(1, 2, 3,); // 函数调用
以上是对ES6、ES7和ES8中新增特性的详细解释及示例。这些新特性使得JavaScript的语法更加简洁、功能更加强大,同时也提高了开发效率和代码的可读性。