es6面试题

2024-03-08 1354阅读

温馨提示:这篇文章已超过398天没有更新,请注意相关的内容是否还可用!

ES6面试题

var、let、const区别

es6面试题
(图片来源网络,侵删)

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

区别:

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()用于将嵌套的数组“拉平”,变成一维的数组。该方法返回一个新数组,对原数据没有影响。

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

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

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

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

    [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()只能展开一层数组。

    // 相当于 [[[2]], [[4]], [[6]], [[8]]].flat()
    [1, 2, 3, 4].flatMap(x => [[x * 2]])
    // [[2], [4], [6], [8]]
    
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]