箭头函数是 ES6 中常用的语法, 也是面试中高频考题之一
基本用法
var a = function() {}
var a = () => {}
var sum = function(a, b) {
return a + b;
};
var sum = (a, b) => a + b;
var sum = (a, b) => {
const sum = a + b
return sum
}
var sum = (a, b) => ({ num1: a, num2: b });
箭头函数和普通函数的区别
-
- 箭头函数内的this, 是定义时所在的对象, 而不是使用时所有的对象(调用者), 且不能使用call, apply, bind改变this指向
var name = "jojo";
var obj = {
name: "ming",
callName: function() {
console.log(this.name);
}
};
obj.callName();
// 箭头函数
var name = "jojo"
var obj = {
name: "ming",
callName: () => {
console.log(this.name)
}
}
obj.callName()
var obj1 = { name: "xiaohong" }
obj.callName.call(obj1)
let Func = () => {
console.log(1)
}
const obj = new Func()
var func = () => {
console.log(arguments);
};
func("a", "b", "c");
var func = (...args) => {
console.log(args);
};
func("a", "b", "c");
-
- 箭头函数不能使用yield命令, 因此箭头函数不能用作 Generator 函数。
// 普通函数
function* m() {
yield 1
yield 2
yield 3
}
var result = m()
m.next()
m.next()
- 总结: 箭头函数没有自己的this, 所以也无法通过call, apply, bind改变this指向.对于不需要改变this指向的情况, 可以考虑使用箭头函数