es6扩展

1.JavaScript中let、const、var 的区别?

1.是否存在变量提升?
	var 有。
		在ES5中js会有预解析,会在js执行开始时,将var、function 声明到当前作用域的最顶端。
	let、const 没有。
2.是否存在暂时性死区?
	var 不存在。
	let const 存在。
		因为let const 存在块级作用域,并且不可以变量声明,在let定义之前使用会报错。
3.是否允许重复声明变量?
	var 可以。
	let、const 不可以。
4.是否存在块级作用域?
	var 不存在作用域。
	let、const 存在作用域。
		块级作用域为 {}
5. 是否能修改声明的变量?
	var 、let 可以。
		这两个是声明变量的。
	const 不可以。
		它是声明常量的。常量一旦声明必须赋值,并且不能改变。

2.箭头函数与普通函数的区别?

普通函数有arguments内置属性,会默认保存参数,箭头函数可以用扩展运算符(...)来展开参数。
普通函数可以用new关键字创建类,箭头函数不能。
普通函数this指向调用者,箭头函数指向父级的上下文(window)。
普通函数可以使用apply、bind、call方法改变this指向,箭头函数this指向不能更改。
箭头函数没有原型属性。

3.结构赋值

解构赋值就是从对象或数组中提取单个变量或属性
结构时两遍的结构类型必须相等;数组结构时,会一一对应;对象结构时,只会对应属性名,没有顺序。也可以用...来结构。一般应用于交换变量,传默认值,忽略某个值,element-ui的单个组件引入,for..of..循环等。

4.class的继承

class中定义方法时,前后不能加function,全部定义在class的protopyte属性中
class中定义的所有方法是不可枚举的
class中只能定义方法,不能定义对象,变量等
class和方法内默认都是严格模式
constructor方法是类的构造函数的默认方法,通过new命令生成对象实例时,自动调用该方法。
constructor方法如果没有显式定义,会隐式生成一个constructor方法。所以即使你没有添加构造函数,构造函数也是存在的。constructor方法默认返回实例对象this,但是也可以指定constructor方法返回一个全新的对象,让返回的实例对象不是该类的实例。
constructor中定义的属性可以称为实例属性(即定义在this对象上),constructor外声明的属性都是定义在原型上的,可以称为原型属性(即定义在class上)。hasOwnProperty()函数用于判断属性是否是实例属性。其结果是一个布尔值, true说明是实例属性,false说明不是实例属性。in操作符会在通过对象能够访问给定属性时返回true,无论该属性存在于实例中还是原型中。
class不存在变量提升,所以需要先定义再使用。因为ES6不会把类的声明提升到代码头部,但是ES5就不一样,ES5存在变量提升,可以先使用,然后再定义。

通过extends 继承父类
 super(); 

5.Promise

是异步编程的一种解决方案。
从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。
Promise状态
1.Promise对象的状态不受外界影响
	1)pending 初始状态
	2)fulfilled 成功状态
	3)rejected 失败状态
2.Promise的状态一旦改变,就不会再变,任何时候都可以得到这个结果,状态不可以逆,只能由 pending变成fulfilled或者由pending变成rejected
Promise的使用
通过new关键字来创建的,它有一个参数,这个参数是一个函数,这个函数有两个参数第一个是成功 resolve 调用的方法,第二个是失败 reject 调用的方法
.then方法:
	就是把原来的回调写法分离出来,在异步操作执行完后,用链式调用的方式执行回调函数。
.catch()方法:
	1.它可以和 then 的第二个参数一样,用来指定 reject 的回调
	2.它的另一个作用是,当执行 resolve 的回调(也就是上面 then 中的第一个参数)时,如果抛出异常了(代码出错了),那么也不会报错卡死 js,而是会进到这个 catch 方法中。
.all()方法:
	Promise 的 all 方法提供了并行执行异步操作的能力,并且在所有异步操作执行完后才执行回调。
.race()方法:
	race 的用法与 all 一样,只不过 all 是等所有异步操作都执行完毕后才执行 then 回调。而 race 的话只要有一个异步操作执行完毕,就立刻执行 then 回调。
	我们可以用 race 给某个异步请求设置超时时间,并且在超时后执行相应的操作。
使用场景:
	promise对axios二次封装、promise封装ajax、promise封装wx.request、promise封装uni.reqest
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值