普通函数在es5中就有了,箭头函数是es6中出现的函数形式,当然也可以继续用普通函数。
1、普通函数
let a=function(){
return 1+1
}
let b=function(x){
return x
}
let c=function(a){
let x=5;
return x+a
}
2、箭头函数
更简短的函数
单条处理可以省略return和{大括号}
单个参数可以省略(小括号)
let a=()=>1+1
let b=x=>x
let c=(a)=>{
let x=5
return a+x
};
1、不绑定this
箭头函数,this代表上层对象,若无自定义上层,则代表window。
普通函数,this代表当前对象。
2、不绑定arguments
箭头函数不绑定arguments,但是可使用…rest参数
这是普通函数arguments,可以使用
3、箭头函数不能使用new操作符
箭头函数不能用作构造器,和 new一起用会抛出错误。
var Foo = () => {};
var foo = new Foo(); // TypeError: Foo is not a constructor
4、箭头函数没有prototype属性
箭头函数没有原型属性。
prototype是普通函数用于获取原型对象的。
5、箭头函数的bind()、call()或apply()函数,不会影响到this的代表对象。
箭头函数内的this指向上层对象,bind()、call()、apply()均无法改变指向。