es6的新特性介绍

摘要 :ECMAScript 6(简称 ES6)是 JavaScript 语言的下一代标准,于 2015 年正式发布,彻底改变了 JavaScript 的编写方式,大幅提升了代码的简洁性、可读性和可维护性。本文将系统梳理 ES6 20 大核心新特性,包含语法示例 + 使用场景,从基础到进阶全覆盖,无论是日常开发还是前端面试,这篇文章都能直接拿来用!

一、ES6 功能概述

ES6(ECMAScript 2015)是 JavaScript 历史上最重要、改动最大的版本,新增了变量声明、解构赋值、箭头函数、Promise、类、模块化等核心功能,解决了 ES5 的诸多缺陷,让 JavaScript 真正具备了开发大型企业级应用的能力。

目前所有现代浏览器均已支持 ES6,是前端工程师必须掌握的核心基础。


二、ES6 20 大核心新特性详解

1. let 关键字:块级作用域局部变量

let 用于声明块级作用域变量 ,只在当前{}内有效,解决了 var 变量提升、全局污染问题。

核心特性

  • 不允许重复声明
  • 不存在变量提升
  • 拥有块级作用域
  • 不会挂载到 window 对象

javascript

运行

复制代码
// 块级作用域示例
if (true) {
  let a = 10;
  console.log(a); // 10
}
console.log(a); // 报错:a is not defined

2. const 关键字:常量声明

const 用于声明只读常量,一旦声明必须赋值,且值不能修改(引用类型可修改内部属性)。

核心特性

  • 声明必须赋值
  • 不能重新赋值
  • 块级作用域
  • 引用类型(对象 / 数组)可修改内部数据

javascript

运行

复制代码
const PI = 3.14159;
// PI = 3.15; // 报错

const obj = { name: "ES6" };
obj.name = "ES6+"; // 允许修改内部属性

3. 变量与对象解构赋值

ES6 允许按照一定模式,从数组 / 对象中提取值,对变量进行赋值,大幅简化变量声明代码

javascript

运行

复制代码
// 数组解构
const [a, b, c] = [1, 2, 3];

// 对象解构(最常用)
const person = { name: "张三", age: 20 };
const { name, age } = person;
console.log(name); // 张三

4. 模板字符串:自带格式的字符串

使用反引号 ````` 声明字符串,支持换行、变量直接嵌入、表达式运算,告别繁琐的字符串拼接。

javascript

运行

复制代码
const name = "ES6";
const str = `我是${name}
支持多行文本
1+1=${1+1}`;

5. 简化对象与函数写法

  • 对象简写:属性名与变量名一致可省略值
  • 方法简写:去掉:function

javascript

运行

复制代码
const name = "张三";
// 简化前
const obj1 = { name: name, say: function(){} }
// 简化后
const obj2 = { name, say(){} }

6. 箭头函数:最常用的函数简化语法

() => {} 是函数的简写形式,语法更简洁,且绑定外层 this,不绑定自己的 this、arguments、super。

javascript

运行

复制代码
// 普通函数
function sum(a, b) { return a + b; }
// 箭头函数
const sum = (a, b) => a + b;

注意:不能用作构造函数、没有 arguments、this 指向外层作用域。

7. 函数参数默认值

直接给函数参数设置默认值,不传参 / 传 undefined 时使用默认值,代码更健壮。

javascript

运行

复制代码
function log(name = "游客") {
  console.log(`欢迎:${name}`);
}
log(); // 欢迎:游客

8. rest 参数:获取所有实参

...变量名 用于获取函数的所有剩余实参,替代 arguments,返回真数组。

javascript

运行

复制代码
function fn(...args) {
  console.log(args); // [1,2,3]
}
fn(1,2,3);

9. 扩展运算符:数组 / 对象展开

... 将数组 / 对象转为逗号分隔的参数序列,常用于数组拷贝、合并、解构

javascript

运行

复制代码
// 数组合并
const arr1 = [1,2];
const arr2 = [3,4];
const newArr = [...arr1, ...arr2]; // [1,2,3,4]

10. Symbol:独一无二的值

ES6 引入的原始数据类型,表示独一无二、不可修改的值,用于解决对象属性名冲突问题。

javascript

运行

复制代码
let s = Symbol("唯一标识");
let obj = { [s]: "ES6" };

11. Promise:异步编程终极解决方案

Promise 是 ES6 提供的异步处理对象,解决回调地狱问题,支持链式调用。

javascript

运行

复制代码
const p = new Promise((resolve, reject) => {
  setTimeout(() => resolve("成功"), 1000);
});
p.then(res => console.log(res));

12. Set 集合:无重复元素的集合

类似数组,成员唯一不重复,常用于数组去重。

javascript

运行

复制代码
const s = new Set([1,2,2,3]);
console.log(s); // Set(3) {1,2,3}
// 数组去重
const arr = [...new Set([1,2,2,3])];

13. Map 集合:键值对集合

类似对象,但键可以是任意类型(对象 / 函数 / 基本类型),遍历有序。

javascript

运行

复制代码
const map = new Map();
map.set("name", "ES6");
console.log(map.get("name")); // ES6

14. class 类:面向对象语法糖

ES6 使用class关键字声明类,语法更接近 Java 等面向对象语言,支持 constructor、extends 继承。

javascript

运行

复制代码
class Person {
  constructor(name) { this.name = name; }
  say() { console.log(this.name); }
}
const p = new Person("张三");

15. 数值扩展

新增Number.isFinite()Number.isNaN()Math.trunc()等方法,完善数值判断与计算。

javascript

运行

复制代码
Number.isNaN(NaN); // true
Math.trunc(3.9); // 3

16. 对象扩展

新增Object.assign()Object.keys()Object.values()等方法,简化对象操作。

javascript

运行

复制代码
// 对象合并
const obj1 = {a:1};
const obj2 = {b:2};
const obj = Object.assign({}, obj1, obj2);

17. 模块化:代码拆分与复用

ES6 原生支持模块化,使用export导出、import导入,实现代码解耦。

javascript

运行

复制代码
// 导出
export const name = "ES6";
// 导入
import { name } from "./test.js";

18. Babel 转换 ES6 模块化

浏览器对 ES6 模块化支持有限,使用Babel将 ES6 代码转为 ES5,兼容所有浏览器。

19. ES6 模块化引入 NPM 包

像导入自定义模块一样,直接引入 npm 安装的第三方包。

javascript

运行

复制代码
import $ from "jquery";
import axios from "axios";

20. Proxy:对象代理

创建对象代理,拦截对象的读取、赋值、删除等操作,实现数据监听(Vue3 响应式核心)。

javascript

运行

复制代码
const proxy = new Proxy({}, {
  get(target, prop) { return target[prop]; },
  set(target, prop, value) { target[prop] = value; }
});

三、总结

ES6 20 大核心特性覆盖了变量声明、代码简化、异步编程、数据结构、面向对象、工程化全场景:

  1. 基础语法:let/const、解构、模板字符串、箭头函数
  2. 函数增强:默认值、rest 参数、扩展运算符
  3. 数据类型:Symbol、Set、Map
  4. 异步与代理:Promise、Proxy
  5. 工程化:class、模块化、Babel 转换

掌握 ES6 是前端开发的入门门槛,也是面试高频考点,建议结合示例多练习,熟练运用到实际项目中!

本文已同步收录前端面试手册,建议收藏 + 点赞,持续更新 ES6 + 高级特性!

相关推荐
不瘦80斤不改名1 小时前
JavaScript 基础语法完全指南
开发语言·javascript·ecmascript
peepeeman2 小时前
vue组件透传
前端·javascript·vue.js
镜宇秋霖丶2 小时前
2026.5.12@霖宇博客制作中遇见的问题
前端·vue.js·elementui
醉逍遥neo2 小时前
mac新电脑-前端开发配置
前端·macos·ghostty
白嫖叫上我2 小时前
Vue3封装主题色完善版
前端
a1117762 小时前
细胞结构实验室(react 开源)
前端·javascript·开源·html
aaaak_2 小时前
PDD 直播间 评论 , wss hex Protobuf 解析流程分析学习
java·前端·学习
ikoala3 小时前
用了几周明基 RD280UG,我终于明白程序员为什么需要一台“专用显示器”
前端·后端·程序员
Dxy12393102163 小时前
JS如何获取元素高度
开发语言·javascript·ecmascript