前端面试题-JS

本文介绍了ES6的关键特性,如块级作用域、let/const、箭头函数、解构赋值、Promise等,详细比较了它们与其他语言特性的区别,并阐述了Promise在处理异步操作中的重要性,以提高代码的可读性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.ES6新增了哪些扩展

  • 块级作用域:引入了letconst关键字,可以在块级作用域内声明变量,替代了var的函数作用域。
  • 箭头函数:使用箭头函数可以简化普通函数的写法。
  • 解构赋值:可以从数组或对象中结构出变量,方便的赋值给其他变量。
  • 默认参数:函数参数可以设置默认值,简化了参数的处理和调用。
  • 模板字符串:使用反引号` `可以创建多行字符串,也可以插入变量或表达式。
  • 扩展运算符:使用‘...’将数组或对象展开,可以创建新的数组或对象。
  • 类与继承:引入了class关键字,可以更方便地定义类和继承。
  • Promise:引入了Promise对象用于处理异步操作,避免了回调地狱。
  • 模块化:引入了importexport关键字,支持模块化开发。
  • 增强对象的字面量:可以在对象字面量中使用变量和函数名简写,以及定义方法和计算属性。
  • for...of循环:用于遍历可迭代对象(如数组、字符串、Set、Map等)的新循环语法。
  • Symbol:引入了Symbol数据类型,用于创建唯一的标识符。
  • Map和Set:引入了MapSet数据结构,分别用于存储键值对和唯一的值集合。

2.let,const,var的区别 

  •  块级作用域:let和const具有块级作用域,var不存在块级作用域。
  • 变量提升:var存在变量提升,let和const不存在变量提升,var在声明前使用会报undefined,let和const只能在声明之后使用,否则会报错。
  • 重复声明:var声明变量时,可以重复声明变量,后声明的同名变量会覆盖之前声明的变量。let和const不允许重复声明变量。 
  • 暂时性死区:在使用let、const命令声明变量之前,该变量都是不可用的。称为暂时性死区。使用var声明的变量不存在暂时性死区。

3.箭头函数和普通函数的区别 

  • 箭头函数比普通函数更加简洁。
  • 箭头函数没有自己的this指针,它只会在自己的上一层作用域中继承this。
  • call(),bind(),apply()不能改变箭头函数的this指向。
  • 箭头函数因为没有自己的this指针,所以不能作为构造函数使用。
  • 箭头函数没有自己的arguments,也没有自己的protoype。

4.对Promise的理解 

  • 异步操作:Promise 用于处理异步操作,如网络请求、文件读取等。它可以将异步操作封装成一个 Promise 对象,在异步操作完成后,通过`then` 方法获取结果或处理错误。
  • 状态:Promise 有三种状态:pending(进行中)、fulfilled(已完成)和 rejected(已失败)。在进行中时可以转为已完成或已失败状态,一旦转为其中一种状态,就不可再改变。
  • then 方法:Promise 的 then 方法用于注册回调函数,其中包含两个回调参数,分别用于处理异步操作成功和失败的情况。成功时调用第一个回调函数,传递异步操作的结果;失败时调用第二个回调函数,传递错误信息。
  • catch 方法:Promise 的 catch 方法用于捕捉异步操作的错误,相当于调用 then 方法的第二个回调函数,维护错误处理链。
  • 链式调用:Promise 的 then 方法和 catch 方法可以链式调用,即一个 then 方法的返回值仍是一个 Promise 对象,可以继续调用 then 方法或 catch 方法。这种链式调用可以将多个异步操作串联起来,提高异步代码的可读性。
  • 解决异步地狱:Promise 可以解决回调地狱的问题,即多个异步操作嵌套时,代码会变得复杂和难以维护。通过 Promise,可以将异步操作按顺序串联起来,提高代码的可读性和维护性。
  • Promise.all 方法:Promise.all 方法接收一个 Promise 数组,并返回一个新的 Promise,该 Promise 在数组中的所有 Promise 都已完成后才会被标记为完成。可以用于同时处理多个并行的异步操作。

持续更新中》》》 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值