ES6+:从语法糖到现代 JavaScript 的核心能力

53 阅读3分钟

ES6+:从语法糖到现代 JavaScript 的核心能力

对前端工程师而言,ES2015(简称 ES6)是一个真正的时代分水岭。
在此之前,JavaScript 既简单又混乱——它能跑,但开发体验并不现代:没有 class、没有模块化、变量提升怪异、对象操作重度依赖原始写法……

ES6+ 的到来彻底改变了这一切。它让 JavaScript 拥有了大型语言所需要的结构化、工程化能力,也让日常开发更加优雅高效。


1. 解构赋值:最优雅的变量声明方式

解构(Destructuring)是 ES6 带来最常用的语法糖之一,它让你能用一种非常“声明式”的方式从数组或对象中提取数据。

1.1 数组解构:一次性声明多个变量

let [a, b, c] = [1, 2, 3];
console.log(a, b, c);

1.2 嵌套数组解构

优雅处理结构更复杂的数据形式:

const arr = [1, [2, 3, [4], 5]];
const [a, [b, c, [d], e]] = arr;
console.log(a, b, c, d, e);

1.3 rest 运算符:剩余内容打包收集

const arr = [1, 2, 3, 4, 5];
const [first, ...rest] = arr;
console.log(first, rest); // 1 [2,3,4,5]

1.4 字符串同样可以解构

const [a, b, ...c] = 'hello';
console.log(a, b, c); // h e ['l','l','o']

1.5 解构字符串的包装对象属性

const { length } = 'hello';
console.log(length); // 5

JS 会自动把原始类型包装成对象,因此可以解构出属性。


2. 对象解构与属性简写:减少冗余,增强可读性

2.1 对象解构(字段名必须一致)

const obj = {
  name: 'l',
  age: 18,
  sex: 'boy',
  like: { n: '唱跳rap篮球' }
};

let { name, age, like: { n } } = obj;
console.log(name, age, n);

2.2 对象属性简写(实际开发中极其常见)

当变量名与属性名一致时,可以使用简写语法:

const sex = 'boy';

const user = {
  name: 'l',
  age: 18,
  sex // 等价于 sex: sex
};

不仅更短,更贴近属性本身的语义。


3. 模板字符串:更强的字符串能力

传统字符串拼接麻烦、难读:

'Hello, I am ' + myName

ES6 的模板字符串解决了这个问题。

let myName = 'ff';

console.log(`Hello, I am ${myName}`);
console.log(`Upper: ${myName.toUpperCase()}`);
  • ... 定义模板字符串
  • ${} 放表达式(可执行,返回值写入字符串)

4. for...of:更优雅的遍历方式

可用于所有可迭代对象:

  • Array
  • String
  • Map
  • Set
  • TypedArray
  • DOM collections 等
let myName = 'hello';

for (let ch of myName) {
  console.log(ch);
}

相比传统 for, 它语义更自然,尤其遍历集合类数据时更加优雅。


5. BigInt:解决 JS 大数精度问题

JS 的 Number 类型基于 64 位双精度浮点数,当数值超过 2^53 - 1 时会出现精度丢失。

ES2020 引入 BigInt 来解决这个问题。

let num = 12345678901234567890123456789n;
console.log(num, typeof num); // bigint

计算示例:

console.log(2n + 3n);

6. 指数运算符 **(ES7)

更自然的指数写法:

console.log(2 ** 10);   // 1024

等价于:

Math.pow(2, 10);

7. 函数默认参数:增强函数健壮性

ES6 以前写默认值只能:

x = x || 1;

ES6 提供更合理的方式:

function foo(x = 1, y = 1) {
  return x + y;
}

console.log(foo(3, 4)); // 7
console.log(foo(3));    // 4

8. rest 参数(...args):替代古老的 arguments

arguments 不是数组,不好用。
REST 参数是真数组,更现代更友好。

function foo(...args) {
  console.log(args);
}

foo(1, 2, 3, 4);

ES6+ 的本质,是让 JS 更加现代化

ES6+ 为 JavaScript 带来的不仅是语法糖,更是一整套更现代、更工程化的开发模式。从解构赋值到模板字符串,从 rest 参数到 BigInt,这些特性共同提升了代码的可读性、健壮性与表达力,让前端在复杂业务场景下依然能够保持优雅与效率。