• ES6新特性 面试高频题1


    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 表达式将抛出一个错误。
  • 相关阅读:
    逻辑漏洞挖掘
    Kafka消费者重平衡
    Qt——多线程
    java计算机毕业设计基于ssm框架的校园闲置二手商品交易平台
    构建spotify的electron版本
    Vue开发中Jwt的使用
    删除集合中的指定元素A.discard(B)A.remove(B)
    25.gateway的Filter 过滤器工厂(springcloud)
    java中ioc和aop是什么?【杭州多测师】【杭州多测师_王sir】
    Dapr中国社区活动之 分布式运行时开发者日 (2022.09.03)
  • 原文地址:https://blog.csdn.net/weixin_51687565/article/details/140002201