ES6新特性 面试高频题1

发布于:2024-07-01 ⋅ 阅读:(19) ⋅ 点赞:(0)

var、let 和 const 的区别

  1. 作用域
    var是函数作用域,如果在一个代码块(如 if 语句或 for 循环)中声明,它仍然可以在整个函数内访问。
    let const是块级作用域, 这意味着它们只在声明它们的代码块内可见。
  2. 可变性
    var 和 let 允许你重新声明和重新赋值同一个变量。
    const 声明的变量必须在声明时初始化,并且不能重新赋值(但可以修改其属性,如果它是一个对象)。
  3. 提升
    var 声明的变量会经历变量提升,这意味着变量可以在声明之前使用,但只有声明没有初始化的值是 undefined。
    let 和 const 声明的变量也会提升,但是它们不会被初始化,所以在声明之前访问它们会导致 ReferenceError。

箭头函数

箭头函数是ES6引入的一种新的函数语法,它提供了一种更简洁的方式来书写函数表达式。
箭头函数没有自己的this、arguments、super或new.target。这些值从外部最近的正常函数继承而来。
箭头函数不能用作构造函数,因此没有prototype属性。

解构赋值

解构赋值是ES6引入的一种语法糖,它允许你从数组或对象中提取数据并赋值给新的变量。这种特性使得代码更加简洁和易于阅读。
应用场景
交换变量值:无需使用临时变量即可交换两个变量的值。
函数参数:从函数参数中解构出需要的数据。
函数返回值:处理函数返回的对象或数组。
数组和对象的属性提取:快速提取数组或对象的属性到变量中。

模板字符串

ES6引入的一种新的字符串字面量特性,它允许你以更简洁、更易读的方式构建字符串。
1 多行字符串:
模板字符串可以跨越多行,不需要使用+来连接多行字符串。

const greeting = `Hello
World`;

2 插值表达式:
你可以在${}中插入变量或表达式,模板字符串会在运行时计算并替换这些表达式。

const name = 'Kimi';
const greeting = `Hello, ${name}!`;

3 模版字符串还可以与数组,对象结合起来使用

Promise对象和async/await语法。

Promise 对象和 async/await 语法都是 JavaScript 中处理异步操作的重要特性,它们提供了不同的方式来简化异步代码的编写和管理。

Promise 对象

Promise 是一种用于异步计算的对象。一个 Promise 对象代表了一个可能还不可用的值,或者一个在未来某个时间点才可用的最终值。

  1. 状态:
    pending:初始状态,既不是成功,也不是失败状态。
    fulfilled:意味着操作成功完成。
    rejected:意味着操作失败。
  2. 基本用法
const myPromise = new Promise((resolve, reject) => {
  // 异步操作
  doSomethingAsync().then(result => {
    resolve(result); // 操作成功
  }).catch(error => {
    reject(error); // 操作失败
  });
});

myPromise.then(result => {
  console.log(result); // 处理结果
}).catch(error => {
  console.error(error); // 处理错误
});
  1. 链式调用
    Promise 的 then 和 catch 方法都返回一个新的 Promise 对象,这允许你进行链式调用。
doSomething()
  .then(result => doSomethingElse(result))
  .then(newResult => doThirdThing(newResult))
  .catch(error => console.error(error));
  1. Promise.all:
    允许你等待多个 Promise 对象完成。
Promise.all([promise1, promise2, promise3]).then(results => {
  // results 是一个数组,包含了所有 promise 的结果
});
  1. Promise.race:
    当传递给 Promise.race 的任何一个 Promise 完成(无论是 resolved 还是 rejected)时,返回的 Promise 将立即完成。

async/await 语法

async/await 是建立在 Promise 之上的语法糖,它使得异步代码看起来和同步代码类似,更易于编写和理解。

  1. async 函数:
    使用 async 关键字声明一个函数,该函数总是返回一个 Promise。
async function fetchData() {
  try {
    const result = await someAsyncFunction();
    console.log(result);
  } catch (error) {
    console.error(error);
  }
}
  1. await 关键字:
    await 关键字只能在 async 函数内部使用,它等待一个 Promise 解决,并返回解决后的值。
    如果 Promise 被拒绝,await 表达式将抛出一个错误。