es6面试题

ES6面试题

var、let、const区别

共同点:都是可以声明变量

区别:

1、var具有变量提升机制,let和const没有

2、var 声明的变量是函数作用域或全局作用域,而 const 和 let 声明的变量是块级作用域。

3、var可以多次声明同一个变量,let和const不可以

4、const 声明的变量必须进行初始化赋值,而 var 和 let 声明的变量可以不进行初始化赋值。

作用域考题

考题一:

Var没有自身的作用域,所以var n=1,打印是1

考题三:

将下列对象合并

方式一:Object.assign

方式二:

方式三:自己封装

箭头函数和普通函数的区别?

1、this指向的问题

箭头函数的this是在箭头函数定义时就决定的,而且是不可修改的(不可用call、apply、bind)

****箭头函数的this指向定义时候、外层第一个普通函数的this

2、箭头函数不能new(不能当作构造函数)

3、箭头函数没有prototype

4、箭头函数没有arguments对象

Promise是什么,它的API有哪些?

1、- Promise是es6新增的语法,用来处理异步请求,解决了es5中回调地狱的问题

2、- Promise的回调函数中接收两个参数,第一个表示请求成功的回调,第二个表示请求失败的回调,分别是resolve和reject。

3、- 使用.then()去获取结果,使用.catch()去捕获异常,并且上一个Promise的执行结果会返回一个Promise对象。

  • Promise.all()和Promise.race()

使用场景:

有些时候我们做一个操作可能得同时需要不同的接口返回的数据,这时我们就可以使用Promise.all;

有时我们比如说有好几个服务器的好几个接口都提供同样的服务,我们不知道哪个接口更快,就可以使用Promise.race,哪个接口的数据先回来我们就用哪个接口的数据。

Promise有几种状态

有3种状态

4、pending(进行中)

5、fulfilled(已成功)

6、rejected(已失败)

async和await?区别?如何用?工作原理?

Async用来定义函数的,是一个异步函数,打印这个函数名会得到promise这个对象,(函数名称.then(函数名称调用then方法,就是promise调用then方法)

Await 后面加表达式,一般使用promise的表达式

工作原理:

Async执行成功会有返回值,内部调用promise.resolve()

  1. Promise是ES6中处理异步请求的语法,使用.then()来实现链式调用,使用.catch()来捕获异常。
  2. async/await 是对Promise的升级,
    async用于声明一个函数是异步的,
    await是等待一个异步方法执行完成(await一个Promise对象)
    await = promise.then成功的情况。
    async/await的捕获异常可以使用try/catch语法。(也可以使用.catch语法)
    find和filter的区别,
    find是查找符合的,返回第一个,
    filter是筛选所有符合的
    区别一:返回的内容不同
    filter返回的是新数组
    find返回的是具体内容
    区别二:
    Find匹配到第一个即返回
    Filter:返回整体(每一个匹配都加入数组,返回这个数组)"

some和every的区别,

some判断是否有符合的,如果有一项就返回true,返回true或false

every判断数组里每一项是否都符合,全部匹配返回true,返回true或false

flat与flatMap使用

1、flat:数组的成员有时还是数组,Array.prototype.flat()用于将嵌套的数组"拉平",变成一维的数组。该方法返回一个新数组,对原数据没有影响。

javascript 复制代码
[1, 2, [3, 4]].flat()
// [1, 2, 3, 4]

flat()默认只会"拉平"一层,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。

如果不管有多少层嵌套,都要转成一维数组,可以用Infinity关键字作为参数。

如果原数组有空位,flat()方法会跳过空位

javascript 复制代码
[1, 2, [3, [4, 5]]].flat()
// [1, 2, 3, [4, 5]]

[1, 2, [3, [4, 5]]].flat(2)
// [1, 2, 3, 4, 5]

[1, [2, [3]]].flat(Infinity)
// [1, 2, 3]

//如果原数组有空位,flat()方法会跳过空位。
[1, 2, , 4, 5].flat()
// [1, 2, 4, 5]

2、flatMap()方法:对原数组的每个成员执行一个函数(相当于执行Array.prototype.map()),然后对返回值组成的数组执行flat()方法。

该方法返回一个新数组,不改变原数组。

flatMap()只能展开一层数组。

javascript 复制代码
// 相当于 [[[2]], [[4]], [[6]], [[8]]].flat()
[1, 2, 3, 4].flatMap(x => [[x * 2]])
// [[2], [4], [6], [8]]
相关推荐
fouryears_2341718 小时前
现代 Android 后台应用读取剪贴板最佳实践
android·前端·flutter·dart
boolean的主人18 小时前
mac电脑安装nvm
前端
用户19729591889118 小时前
WKWebView的重定向(objective_c)
前端·ios
烟袅18 小时前
5 分钟把 Coze 智能体嵌入网页:原生 JS + Vite 极简方案
前端·javascript·llm
18你磊哥18 小时前
Django WEB 简单项目创建与结构讲解
前端·python·django·sqlite
KangJX18 小时前
iOS 语音房(拍卖房)开发实践
前端·前端框架·客户端
神秘的猪头18 小时前
🧠 深入理解 JavaScript Promise 与 `Promise.all`:从原型链到异步编程实战
前端·javascript·面试
白兰地空瓶18 小时前
从「似懂非懂」到「了如指掌」:Promise 与原型链全维度拆解
前端·javascript
麦麦在写代码18 小时前
前端学习5
前端·学习
YF021119 小时前
Frida for MacBook/Android 安装配置
android·前端