随着前端技术的不断发展,JavaScript 也在不断地更新和完善。从 ES6 到 ES11,JavaScript 增加了许多新功能和语法糖,使得开发者能够更加高效地编写代码,提高代码质量和可维护性。本文将介绍 ES6 到 ES11 的一些新功能,并探讨它们对 JavaScript 代码环境的改善。
ES6
let 和 const 声明
ES6 引入了 let 和 const 关键字,用于声明变量和常量。相比 var,let 和 const 更加严格,避免了变量提升和作用域污染的问题。
let a = 1; const b = 2;
箭头函数
箭头函数是 ES6 中的一项重要特性,它简化了函数的书写方式,同时避免了 this 指向的问题。
const sum = (a, b) => a + b;
模板字符串
模板字符串是一种新的字符串语法,可以方便地插入变量和表达式,避免了传统字符串拼接的麻烦。
const name = 'Alice';
const message = `Hello, ${name}!`;解构赋值
解构赋值是一种方便的赋值方式,可以将数组和对象中的值解构出来赋给变量。
const [a, b] = [1, 2];
const { name, age } = { name: 'Alice', age: 18 };类和继承
ES6 引入了 class 和 extends 关键字,用于定义类和继承。相比传统的原型链继承,class 更加直观和易于理解。
-- -------------------- ---- -------
----- ------ -
----------------- -
--------- - -----
-
------- -
------------------------- ----- - ---------
-
-
----- --- ------- ------ -
------- -
------------------------- ---------
-
-
----- --- - --- -------------
------------ -- ------ -------ES7
includes 方法
includes 方法是 ES7 中的一项新功能,用于判断一个数组或字符串是否包含某个元素。
const arr = [1, 2, 3];
console.log(arr.includes(2)); // true
const str = 'hello';
console.log(str.includes('ell')); // trueES8
async/await
async/await 是 ES8 中的一项重要特性,用于异步编程。相比传统的回调函数和 Promise,async/await 更加直观和易于理解。
async function getData() {
const response = await fetch('https://api.github.com/users');
const data = await response.json();
return data;
}
getData().then(data => console.log(data));Object.entries 和 Object.values
Object.entries 和 Object.values 是两个新的方法,用于获取对象的键值对和值列表。
const obj = { a: 1, b: 2 };
console.log(Object.entries(obj)); // [["a", 1], ["b", 2]]
console.log(Object.values(obj)); // [1, 2]ES9
Rest/Spread 属性
Rest/Spread 属性是 ES9 中的一项新功能,用于简化对象和数组的操作。
const obj1 = { a: 1, b: 2 };
const obj2 = { ...obj1, c: 3 };
console.log(obj2); // { a: 1, b: 2, c: 3 }
const arr1 = [1, 2, 3];
const arr2 = [0, ...arr1, 4];
console.log(arr2); // [0, 1, 2, 3, 4]ES10
Array.flat 和 Array.flatMap
Array.flat 和 Array.flatMap 是 ES10 中的两个新方法,用于扁平化数组和映射数组。
const arr1 = [1, [2, 3], [4, [5]]]; const arr2 = arr1.flat(2); console.log(arr2); // [1, 2, 3, 4, 5] const arr3 = [1, 2, 3]; const arr4 = arr3.flatMap(x => [x, x * 2]); console.log(arr4); // [1, 2, 2, 4, 3, 6]
Optional Chaining
Optional Chaining 是 ES10 中的一项新功能,用于简化多层嵌套属性的访问。
const obj = { a: { b: { c: 1 } } };
console.log(obj?.a?.b?.c); // 1ES11
Nullish Coalescing Operator
Nullish Coalescing Operator 是 ES11 中的一项新功能,用于判断一个变量是否为 null 或 undefined,如果是则返回默认值。
const a = null; const b = a ?? 'default'; console.log(b); // "default"
Promise.allSettled
Promise.allSettled 是 ES11 中的一项新功能,用于等待多个 Promise 完成,无论成功或失败。
-- -------------------- ---- ------- ----- -------- - ------------------- ----- -------- - ------------------------ ----- -------- - ------------------- ----------------------------- --------- ---------- ------------- -- ---------------------- -- -- ------- ------------ ------ - -- -- - ------- ----------- ------- ------- -- -- - ------- ------------ ------ - --
结语
ES6 到 ES11 增加了许多新功能和语法糖,使得 JavaScript 代码的编写更加高效、简洁和易于维护。通过学习这些新功能,我们可以更加深入地理解 JavaScript 的特性和设计思想,提高自己的编程能力和代码质量。
Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/67d85ebaa941bf7134edc27c