箭头函数
应用场景:用于替换匿名函数
基本用法
有一个参数名的匿名函数
var fn = function(name) {
console.log(name)
}
// 等价于
var fn = name => {
console.log(name)
}
// 也等价于
var fn = (name) => {
console.log(name)
}
有两个或以上的参数的匿名函数
var q = function(naem, age) {}
// 等价于
var q = (naem, age) => { //切记:()不能省略
}
箭头函数中关于this的指向
var p = {
age: 18,
// es6中对象方法的箭头函数表达形式
run: () => {
setTimeout(() => {
console.log(this); //window
}, 100)
},
travel: function() {
// this=>p
setTimeout(() => {
console.log(this); //p
}, 100)
},
//
es6中对象方法的箭头函数表达形式的简写形式
say() {
console.log(' ssst', this) //p
setTimeout(() => {
console.log(this); //window
}, 100)
},
}
p.run();
p.travel();
p.say();
箭头函数有几个使用注意点。
1. 函数体内的this对象, 就是定义时所在的对象, 而不是使用时所在的对象。
2. 不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
3. 不可以使用arguments对象, 该对象在函数体内不存在。 如果要用, 可以用 rest 参数代替。
4. 普通的匿名函数,或者说具名函数都可以决定this的值,而箭头函数不可以
5. 淘汰:不可以使用yield命令, 因此箭头函数不能用作 Generator 函数。Generator 函数x现在经常用async替代