因为学习箭头函数的时候肯定先行学习过了ECMAScript5.0的语法,所以在本文中会以箭头函数(ECMAScript6.0中函数的新特性)为主来进行说明
1.箭头函数和普通函数this的指向问题:
使用ECMA5.0语法定义的普通函数里,this的指向取决于使用,谁使用它,this就会指向谁,而在node.js(ECMA6.0的语法环境中)对于函数,this的指向取决于函数的定义,而不是谁使用函数
如果直接调用this,在普通函数中,this会指向Window,而在箭头函数中,它会指向nodejs环境下的所有成员
改变this的指向
function foo(){
console.log(this);
}
foo.call({num:100}); //{ num: 100 }
foo.bind({num:200})(); // { num: 200 }
2. 箭头函数不可以使用new来构造函数
在ECMA5.0中,可以使用new的方法来将构造函数初始化对象,而在ECMA6.0中,引用了类的概念,特意的增加了一个回调函数------classcallback函数,防止通过构造函数直接调用,也就不能直接new实例,这点特性会在ECMA6.0类和继承中进行详细说明
3. 箭头函数不可以使用arguments获取参数列表,可以使用rest参数来代替arguments
let foo=(...c)=>{console.log(arguments);}; foo(123,456)
返回结果为:是一个空的对象列表
而在ECMA5中,返回的是一个参数列表
而使用rest参数来代替的话,可以返回一个参数数组
`let foo=(…c)=>{console.log©;};
返回结果为:
[ 123, 456 ]
s