ES6是JavaScript现代化起点,2015年发布,奠定简洁安全可维护基础;核心特性包括let/const块级作用域、箭头函数(继承外层this)、模板字符串(支持插值与多行)、解构赋值(对象数组按名/序取值)。

ES6不是“最新”语法,而是JavaScript现代化的起点——它在2015年正式发布(也叫ECMAScript 2015),奠定了今天日常开发中绝大多数简洁、安全、可维护写法的基础。后续版本(如ES2016~ES2024)都是在其之上渐进增强,但核心范式和高频特性基本来自ES6。
下面挑出真正常用、影响编码习惯最深的几项,讲清楚是什么、为什么用、怎么避坑:
块级作用域变量:let 和 const
替代老旧的 var,解决变量提升、全局污染、循环闭包等经典问题。
-
let 声明的变量只在当前块(
{}、if、for内)有效,不能重复声明,也不允许在声明前使用(暂时性死区) - const 必须初始化,之后不能重新赋值;注意:它保护的是“绑定”,不是“值”——对象或数组的内容仍可修改
- 推荐实践:默认用 const,仅当变量需重新赋值时才用 let,彻底弃用 var
箭头函数:更短、更稳的函数写法
不只是省几个字,关键是 this 绑定规则变了——它不创建自己的 this,而是继承外层作用域的 this。
立即学习“Java免费学习笔记(深入)”;
- 单参数可省括号,单表达式可省大括号和 return:
nums.map(x => x * 2) - 适合回调、映射、过滤等场景,但不要用于对象方法或需要动态 this 的地方(比如事件处理器里要访问
this.element,用箭头函数会出错) - 没有
arguments,改用剩余参数...args
模板字符串:告别加号拼接
用反引号 ` 包裹,支持变量插值和多行文本。
- 写法:
`Hello ${name}, you have ${count} messages.` - 天然支持换行,不用
\n或连接符 - 可嵌套表达式:
`Sum: ${a + b}`,甚至调用函数:`Time: ${new Date().toLocaleTimeString()}`
解构赋值:一行拆出多个值
从数组或对象里“按名/按序”直接取值,代码立刻变清晰。
- 对象解构:
const { name, age } = user;,还能重命名:const { name: fullName } = user; - 嵌套解构:
const { address: { city, zip } } = user; - 数组解构:
const [first, , third] = arr;(跳过第二个)或const [head, ...rest] = arr;
基本上就这些。ES6不是堆砌新功能,而是把开发者天天踩的坑(比如 var 的作用域混乱、this 失控、字符串拼得面目全非)系统性地修好了。后续版本新增的 ?.、??、Promise.allSettled 等,都是在这个稳健底座上长出来的枝叶。











