ES6 新特性都有哪些
let/const:块级作用域,无变量提升(注意:实际是有"暂时性死区"和声明提升,但语义不同)。- Promise:异步编程的统一方案。
- Symbol:新的原始数据类型,用于唯一标识。
- 数组方法扩展:如
reduce、Array.from、Array.of、includes、find/findIndex、flat/flatMap。 - 解构赋值:从数组/对象中提取数据。
- Generator:通过
function*与yield实现的协程,可暂停/恢复函数。 - Class:基于原型的语法糖。
- Module 模块:
import/export。 - 此外还有:箭头函数、模板字符串、对象/数组扩展、Set/Map、Proxy、Reflect、for...of、迭代器、async/await(在 ES2017)等。
补充:ES6 的
class可以看作是一个语法糖,它的绝大部分功能 ES5 都可以做到:
ES6 的 class 可以看作是一个语法糖,
它的绝大部分功能 ES5 都可以做到,
新的 class 写法只是让对象原型的写法更加清晰、
更像面向对象编程的语法
模块化
ES Module(import / export)是官方模块化方案,与 CommonJS(require / module.exports)的区别:
- ESM 是静态的(编译期确定依赖),支持 tree-shaking;CJS 是运行时加载。
- ESM 输出的是值的引用(实时绑定),CJS 输出的是值的拷贝。
- 浏览器原生支持 ESM(
type="module")。
// ES Module
import { foo } from './module.js';
export const bar = 1;
// CommonJS
const { foo } = require('./module.js');
module.exports = { bar: 1 };
来源整理自:vue3js.cn 面试官系列



