ES6是JavaScript的重大升级,2015年发布,引入let/const(块级作用域、禁止重复声明、暂时性死区)、解构赋值、模板字符串、箭头函数、默认参数、展开运算符、Promises和模块化等特性,提升代码简洁性、安全性和可维护性。
ES6(全称 ECMAScript 2015)是 JavaScript 语言的一次重大升级,2015 年正式发布,标志着 JS 进入现代化开发阶段。它不是一门新语言,而是 JavaScript 的标准规范更新,解决了 ES5 中长期存在的语法冗余、作用域混乱、异步难写等问题,让代码更简洁、安全、易维护。
取代老旧的 var,带来三个关键改进:
{} 内声明,外部无法访问,比如 if 或 for 块里定义的变量不会泄漏到外层let a; let a; 或 const b = 1; const b = 2; 都会报错console.log(x); let x = 10; 直接报 ReferenceError
const 声明,只是不能重新赋值(即不能改引用地址),但可以修改其内部属性或元素,例如:const arr = [1]; arr.push(2); 是合法的从数组或对象中按结构快速取值,大幅减少样板代码:
const [first, , third] = ['a', 'b',
'c']; → first === 'a',中间用逗号跳过const { name, age: years } = { name: 'Tom', age: 30 }; → 变量名可重命名(years)const { city = 'Beijing' } = {}; → 缺失属性时自动填充function greet({ name, msg = 'Hi' }) { return `${msg}, ${name}!`; }
告别 + 拼接和 function 冗长写法:
` 包裹,支持多行和嵌入表达式:const str = `Hello ${user.name}, you have ${count || 0} new messages.`;
this 绑定定义时的上下文,避免回调中丢失:list.map(item => item.id) 或 setTimeout(() => console.log(this.value), 100);
{} 和 return,如:x => x * 2
这些特性虽不总被单独强调,但在日常开发中高频出现:
function fn(a = 1, b = 'ok') { },比 ES5 的 a = a || 1 更准确(不误判 0、false 等假值)[...arr]、合并对象 {...obj1, ...obj2}、传参 Math.max(...numbers)
.then()/.catch() 替代深层回调嵌套