春节将至,春节之后我也踏上了杭州找工作之旅,找工作之前我复习一下基础知识,顺便整理一篇文章分享也算是巩固一下。大佬请绕行,如果有杭州前端的小伙伴赶紧加我。
es6高频考点我分为三个级别
T0级别:块级作用域(const,let)、箭头函数、promise
T1级别:模板字符串、函数参数默认值、解构赋值
T2级别:symbol、Map和Set、
T3级别:其他一些数组、字符串、对象的新方法、语法糖。
前言
如果想面试的话T0级别是重中之重,如果连T0级别的都是都没整透的话,还是老老实实复习吧。这篇我整理了T0级别的几个经常考的点,这个面试不考你回来打我。T1、T2、T3将在之后分享。
考点
1.箭头函数
箭头函数大家不要把他理解成函数,把他理解成模仿函数形成的一种结构,本身不是函数。
写法更简洁
话不多说先上一道面试题。
不懂请百度搜索 箭头函数
this问题
不是箭头函数this跟普通函数this不一样,是箭头函数根本没有this,this他去哪找,那就去父级环境去找this。所以说箭头函数this是定义时指向父级作用域。
不能使用call、aplly、bind:箭头函数连this都没有何谈改变this指向。
不能作为构造函数不能用new:new的原理是新建一个对象然后把构造函数的this指向新建的对象,还是那个问题没有this。
arguments对象无法使用
跟this一样,arguments指向的并不是当前函数的arguments,而是上层function函数的arguments,假如上层没有function环境。使用arguments会报错。
至于为什么,你就认为箭头函数不是真正的函数吧,是模拟出来的。
2.块级作用域(let const)
还是一个经典的面试题
在es6之前,作用域有什么,全局作用域和函数作用域。到es6了新增了块级作用域,什么是一个块级作用域,{}就是一个块级作用域,声明块级作用域变量和常量用什么啊,let 和const。
let 和const区别我就不说了,说一下let 和var吧。
let 和var区别:
1.var有变量提升(别问啥是变量提升),let没有,let在声明之前是暂时性死区,访问的话就会报错。
2.不能重复声明,如果同一个作用域中存在同名变量的话,你用var在声明一次没问题,但是你在用let 的话就会报错。
3.promise
重中之重之重之重啊老铁。初级前端面试基本必考啊。手写promise,建议大家都去掌握,也就链式调用那比较复杂(百度)。
promise是啥,异步编程的一种解决方案,没有promise能不能异步编程,能,上代码。
假装setimeout是异步请求,下一个请求需要上一个请求的数据。这种写法像不像那个俄罗斯套娃,那我们怎么样能把这种写法变成同步写法呢,有请主角 promise。
这样是不是舒服多了。
还有常用的
Promise.all()适用场景:一个界面需要两个异步请求的数据才能渲染。
Promise.race()适用场景:真是想不到有啥适用场景(不常用)。
建议:如果不了解promise的同学们,我建议大家把promise所有的细节和用法都尝试一下深入理解一下,然后去手写模拟一个promise,手写promise几乎是必考的。这篇文章就不分享手写了,之后我整理手写promise最简洁的。