es6面试题整理

  1. 什么是变量提升,为什么存在变量提升,变量与函数是怎么进行提升的,优先级是怎么样
    变量提升:该变量可以在未声明之前使用,值为undefined(在代码执行前,先在此法环境中进行了注册)

    为什么:如果没有变量提升,那么下面代码就没办法执行啦:

    function f1(){
    	f2()
    };
    function f2(){
    	f1()
    }
    // js代码从上往下执行,执行f1就会调用f2,如果没有函数提升,那么f2就还未声明
    

    提升方式
    先对所有函数进行提升(不包括箭头函数与表达式)
    1.开辟堆空间
    2.存储内容
    3.将地址赋值给变量
    再对所有变量进行提升。
    使用let、const时,不能再声明之前使用变量,叫做暂时性死区。

  2. var、let、const区别
    var存在变量提升,但是后两者没有;
    var的全局声明的变量会挂载到window上,但是后两者不会,因为有块级作用域,var没有;
    let、const都是在声明所在块级作用域内有效,并且不允许重复命名;
    let声明的变量可以改变、值与类型都可以改变,没有限制;
    const一旦声明,就必须立即初始化,不能留到以后赋值;

  3. map、filter、reduce
    map:生成一个新的数组,将数组的每一个元素处理之后再拿回去
    filter:生成一个新的数组,通常都是过滤到不需要的元素,将为true的元素放入新的数组返回
    reduce对数组元素通过回调函数转换为一个值将之前数组遍历产生的结果与当前的遍历项进行计算,不改变原来的数组,prev:上一次回调返回的值,cur:当前的数组元素,0:初始值,一般为0

let arr = [1, 2, 3, 4, 5]
console.log(arr.map(item => (item > 2 ? item : item + 10)) , arr);
// [ 11, 12, 3, 4, 5 ] [ 1, 2, 3, 4, 5 ]
console.log(arr.filter(item => item > 1) , arr);
// [ 2, 3, 4, 5 ] [ 1, 2, 3, 4, 5 ]
console.log(arr.reduce((prev , cur) => prev + cur) , 0); // 15 0
  1. Promise
    定义:是异步编程的一种解决方案,可以从中获取异步操作信息,替代传统的回调事件。
    event loop的执行顺序:一开始整个脚本作为一个宏任务执行(执行同步代码),执行过程中同步代码直接执行,再执行宏任务,全部执行完,执行微任务。
    延时任务会(set…)被放到下一任宏任务中执行
    宏任务包括:script、setTimeout、seInterval、I/O
    微任务包括:.then()、.project()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值