带你了解面试常被问到的ES6+的核心新特性
2025-04-05 09:28 阅读(36)

前言:在面试中,面试官经常会问你有没有了解过ES6+的新特性?你有用过哪些ES6+的好用的特性?这背后其实是面试官希望了解你是否关注技术前沿,是否能够将新特性运用到实际开发过程中。下面我简单介绍下一些核心特性,以便各位在面试中心里有个大概的回答思路。

1. 变量声明

let和const:

let:块级作用域,避免变量提升导致的意外覆盖。

const:声明常量,值不可修改(对象 / 数组内容可变)。

应用场景:循环变量、配置项等。


2. 函数增强

箭头函数(() => {}) :

语法更简洁,无this绑定(继承外层作用域的this)。

示例:适合回调函数,如arr.map(item => item * 2)。


默认参数:

function greet(name = 'Guest') { ... },简化参数处理。


3. 模板字符串

功能:多行字符串、变量插值(${expression})、表达式运算。

示例:

const name = 'Alice'; 
console.log(`Hello, ${name}! Age: ${20 + 5}`);

4. 解构赋值

对象解构:

const { name, age } = { name: 'Bob', age: 30 };

数组解构:

const [a, b, ...rest] = [1, 2, 3, 4]; // rest = [3,4]

用途:快速提取数据,减少样板代码。

5. Promise与异步处理

Promise:

解决回调地狱,通过.then()链式调用处理异步。

示例:

fetchData().then(result => handle(result));

async/await:

以同步方式编写异步代码,提高可读性

示例:

async function loadData() {
    const response = await fetch(url); 
    return response.json(); 
}

6. 模块化(ES Module)

导入/导出:

// 导出 
export const add = (a, b) => a + b; 
// 导入
import { add } from './math.js';

7. 新数据结构

Set:无序、唯一值集合,支持快速查找。

const unique = new Set([1, 2, 2, 3]); // size: 3

Map:键值对存储,键可以是任意类型

const map = new Map(); map.set('key', 'value');

对象与数组增强

对象字面量扩展:

const name = 'Alice'; 
const obj = { name, sayHello() { ... } }; // 简写属性和方法

includes方法:

[1, 2, 3].includes(2); // true

扩展运算符(...):

const arr = [1, 2]; 
const newArr = [...arr, 3]; // [1,2,3]

9. Proxy与Reflect

Proxy:拦截对象的访问,修改等操作

const handler = { get(target, key) { ... } };
const proxy = new Proxy(target, handler);

Reflect:与Proxy配合,提供更安全的对象操作方式

10. 其他实用特性

Symbol:唯一标识符,避免属性名冲突

Class语法糖:基于原型链的面向对象编程

for...of循环:遍历可迭代对象(数组、Set等)。