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 表达式将抛出一个错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/861499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【学习】如何利用Python技术进行软件测试相关工作

Python是一种广泛使用的高级编程语言,它因其简洁的语法、强大的库支持和跨平台特性而受到开发者的喜爱。在软件测试领域,Python同样发挥着重要作用,它可以帮助测试人员编写自动化测试脚本、进行接口测试、性能测试、以及处理测试数据等。以下…

Camera定制修改

需求: Android13 MtkCamera右上角的前后摄切换点击范围小导致经常点击无反应,需增大view宽度 跟踪代码可找到对应资源文件:vendor\mediatek\proprietary\packages\apps\Camera2\feature\setting\cameraswitcher\res\ 根据vendor\mediatek\…

【Linux】进程信号_3

文章目录 八、进程信号2. 信号的保存3. 信号的处理 未完待续 八、进程信号 2. 信号的保存 实际执行信号的处理动作称为信号递达(Delivery) 信号从产生到递达之间的状态,称为信号未决(Pending)。 进程可以选择阻塞 (Block )某个信号。 被阻塞的信号产生时将保持在未决状态,直到…

华为开发者调试工具使用介绍(MDC)

MDC的开发过程的三大工具:MMC、MDS、Mind Studio,这三个工具完成了开发过程中的配置文件编写、代码编写以及AI模型的开发三个任务。除了开发,MDC还准备了两个调试工具,用于使用过程中数据的查看等。这一些调试工具分别对映射MDC中…

单目标应用:基于鳗鱼和石斑鱼优化器(Eel and grouper optimizer,EGO)的微电网优化(MATLAB代码)

一、微电网模型介绍 微电网多目标优化调度模型简介_vmgpqv-CSDN博客 参考文献: [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7 二、鳗鱼和石斑鱼优化器求解微电网 2.1算法简介 鳗鱼和石斑鱼优化器&…

过滤器模式

过滤器模式 过滤器模式(Filter Pattern)是一种设计模式,它允许你使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式将这些标准组合起来。这种模式特别适用于希望对数据集进行灵活过滤的场景,而不需要修改现有代…

GPT-5:AI新纪元的开启与我们的未来

GPT-5 一年半后发布?对此你有何期待? IT之家6月22日消息,在美国达特茅斯工程学院周四公布的采访中,OpenAI首席技术官米拉穆拉蒂被问及GPT-5是否会在明年发布,给出了肯定答案并表示将在一年半后发布。此外,…

前端面试题(基础篇十)

一、JavaScript内置类型 JS 中分为七种内置类型,七种内置类型⼜分为两⼤类型:基本类型和对象 ( Object )。 基本类型有六种: null , undefined , boolea n, number , …

MySQL简介:开源数据库的基石(一)

目录 引言:数据库领域的革新者 一、MySQL的发展历程:从开源先锋到行业领袖 二、MySQL的核心特性:性能、安全与灵活性并重 三、MySQL的应用场景:从Web开发到企业级应用的全面覆盖 四、MySQL在开源数据库中的地位:开…

梳理湖南省各市市场监督管理专项资金申请条件对象及认定补贴流程

第一章 总 则 第一条 为加强和规范湖南省市场监督管理专项资金管理,提高资金使用效益,根据《中华人民共和国预算法》《中共中央 国务院关于全面实施预算绩效管理的意见》《湖南省人民政府关于进一步深化预算管理制度改革的实施意见》(湘政发〔2021〕14号…

Excel直接打开csv文件后,数据不能正常显示的解决方法

很多处理公司数据的同事偶尔也会遇到使用Microsoft的Excel或者金山的WPS打开csv文件后,发现数据不能正常显示,其实csv属于一种数据库文件,遵循数据库存储的规则,建议使用导入的方式进行打开。 1.打开一张空白的Excel表&#xff0…

Spring Boot 集成 H2 数据库

1. 引言 Spring Boot 以其简洁的配置和快速开发能力,成为现代微服务架构的首选框架之一。而H2数据库作为一个轻量级的内存数据库,非常适合开发阶段作为嵌入式数据库进行单元测试和功能验证。本文将手把手教你如何在Spring Boot项目中集成H2数据库&#…

Open3D 显示带有强度的点云数据

目录 一、概述 1.1强度信息的意义 1.2应用场景 二、代码实现 三、实现效果 一、概述 在点云数据中,强度(Intensity)指的是激光雷达传感器在扫描环境时,每个点返回的反射强度值。这些强度值代表了激光脉冲返回的能量&#xff…

Python + Playwright(19):Clock 测试时间相关行为API

Python + Playwright(19):Clock 测试时间相关行为API 概述Clock API 的重要性Clock API 的详细说明初始化时钟并设置特定时间暂停时钟快进时钟代码示例高级用法模拟网络延迟测试异步操作实践建议测试前清理环境分离时间相关和非时间相关的测试使用明确的断言注意事项恢复时钟…

centos 破解密码

重启您的CentOS系统。 在GRUB引导加载器启动过程中,当看到启动画面时,按下e键进入编辑模式。 找到以 linux16 或 linux 开头的启动行。 在该行的末尾添加 rd.break 或者ro(只读)修改为 rw 加init/sysroot/bin/sh参数&#xff0…

IPQ5018 SPF12.2 CSU3 编译指南

编译和加载image 1. 从高通的门户网站下载高通技术公司(QTI)专有的CHIPCODE 2. 在编译默认配置时,下载QSDK的相关组件 3. 生成固件: a. 重新组装代码,生成QSDK 框架 b. 设置并创建QSDK c. 生成一个完整的固件镜像 4. flash 烧写软件映像 安装编译环…

torchaudio.load() 和 librosa.load() 的返回值区别

问题 之前都在使用librosa加载音频数据,今天看到一段代码是用torchaudio加载的音频,发现torchaudio加载的数据和librosa返回的结果不一致。 查看资料后做出以下对比: torchaudio.load 函数返回一个包含两个张量的元组: 音频数据张量,形状为…

Nacos详解

nacos官方文档:https://nacos.io/ 一、什么是nacos? Nacos是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 nacos官方文档:https://nacos.io/ nac…

C语言-二级指针应用场景

二级指针应用 引子:在线性表 销毁函数中,传入二级指针作为参数,可以实现对线性表的销毁操作。 //销毁已存在的线性表 void DestroyList(list_t **L){// Step 1: 检查L是否为非空指针if(L) // Step 2: 释放L指向的内存空间free(*L);// Step 3: 将L所指向的指针置为NULL&#xff…

数据结构--栈(图文)

栈是一种基本的抽象数据类型,具有后进先出的特点。在栈这种数据结构中,元素只能在一端进行插入和删除操作,这一端被称为栈顶(Top),而另一端则称为栈底(Bottom)。 栈的概念及特点 栈…