1.箭头函数的this指向在定义它时所处的对象
// 例如
let es6fn = ()=>{
console.log(this)
}
let fn = function(){
console.log(this)
}
es6fn() // 这里this指向Window
fn()// 普通函数的this指向Window
// 即使我们使用对象调用他,也仍然是windw
let obj = {
name:'',
es6fn,
fn
}
// obj.es6fn()// 箭头函数的this仍然是Window
// obj.fn()// {name: '', es6fn: ƒ, fn: ƒ}这里普通函数的this指向调用者obj对象
// 即使我们使用call()也改变不了他的this指向
es6fn.call(obj)// Window
fn.call(obj)//{name: '', es6fn: ƒ, fn: ƒ}
2、不能作为构造函数实例化对象
let Es6Person = (name,age)=>{
this.name = name
this.age = age
}
let Person = function(name,age){
this.name = name
this.age = age
}
let persons = new Person('zhang',18)//普通函数可以实例化对象
let es6person = new Es6Person('zhang',20)//箭头函数实例化的话报错:Es6Person is not a constructor
3、箭头函数不能使用arguments变量
let Es6fn = ()=>{
console.log(arguments)//arguments is not defined
}
let fn = function(){
console.log(arguments)//arguments为传进来的参数组
}
fn(1,2,3)
Es6fn(1,2,3)
运行结果:
4、当形参有且只有一个时,可以省略小括号
let Es6Fn = n=>{
console.log(n)
}
Es6Fn(6)
5、当只有一条语句时,可以省略花括号
let Es6Fn = n=> console.log(n)
Es6Fn(6)