ES6对Function函数类型升级优化

ES6对Function函数类型升级优化

优化部分

箭头函数(核心)

  1. 箭头函数内的this指向的是函数定义时所在的对象,而不是函数执行时所在的对象。ES6中函数里的this总是指向函数执行时所在的对象,这使得很多情况下this的指向变得难以理解,可以归结为语言层面的bug之一。箭头函数优化了这一点,它的内部没有自己的this,这样就导致了this总是指向上一层的this,如果上一层还是箭头函数,则继续向上指,直到指向有自己的this的函数为止,并作为自己的this;

  2. 箭头函数不能用作构造函数,因为没有this,无法实例化;

  3. 由于箭头函数没有this,所以箭头函数内也不存在arguments对象(可以用扩展运算符...代替)

函数默认赋值

在ES6之前,函数的形参是无法给默认值的,只能在内部通过变通方法实现,ES6以更简洁的方式进行函数的默认赋值。

//ES5
function add(x,y){
	const a=x||'请输入数字',
	b=y||''
	return a+b
}

//ES6
function add2(x='请输入数字',y=''){
	return x+y
}

console.log(add(1,2))
console.log(add())

console.log(add2(1,2))
console.log(add2())

  

升级部分:

ES6新增了双冒号运算符,用来取代以往的bind,call,和apply。(浏览器暂不支持,Babel已经支持转码)

foo::bar;
// 等同于
bar.bind(foo);

foo::bar(...arguments);
// 等同于
bar.apply(foo, arguments);
复制代码

  

posted @ 2022-09-22 11:45  宋072  阅读(45)  评论(0)    收藏  举报