箭头函数: var fn=(a,b)=>{};
1. 箭头函数的this
// 1.
var fn = (a, b) => {
console.log(this);
return a + b;
}
var obj={name:"karen", fn};
var re = fn(100, 200); // window
var re2 = obj.fn(100, 200); // window
console.log(re, typeof fn); // 300 function
// 2.
var obj = {
name: "karen",
say: function () {
var fn = (a) => {
console.log(this); // obj
return 100;
}
fn(2) // fn调用者window
}
}
obj.say(); // 调用者obj
// 3.
var fn = () => {
console.log(this); // window
}
var obj = {
name: "karen"
};
fn.call(obj); // 不会报错 但是也不会改变内部的this
2. 如果箭头函数的执行体只有一个表达式 就是返回值 那么可以省略大括号, 如果箭头函数的形参只有一个 可以省略参数体小括号
var fn = (a, b) => a * b;
console.log(fn(10, 20)); // 200
var fn3 = a => a * a;
console.log(fn3(100)); // 10000