基础用法
es6允许使用箭头(=>)定义函数
const arrowFunc = () => void console.log("Hello Word!");
使用圆括号代表参数部分,如果代码块部分执行语句较多,需要使用大括号将代码块包裹起来,如果函数只返回一个对象,这需要在括号将对象进行包裹,如果代码块只用一条语句,且不返回任何值,可以使用
void
命令。
踩坑点
函数体内的
this
对象,就是定义时所在的对象,而不是使用时所在的对象。箭头函数没有自己的this
对象,与包裹它的代码共享this
对象,因此bind call apply
对其无效。
// this 对象
var bob = {
_name: "Bob",
_friends: [],
printFriends() {
this._friends.forEach(f => console.log(this._name + " knows " + f));
}
};
不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
与包裹它的代码共享arguments
对象不,因此arguments
对象在函数体内不存在。可以用rest
参数代替。
// arguments 对象
function square() {
let example = () => {
let numbers = [];
for (let number of arguments) {
numbers.push(number * number);
}
return numbers;
};
return example();
}
square(2, 4, 7.5, 8, 11.5, 21); // returns: [4, 16, 56.25, 64, 132.25, 441]
const arrowRest = (...rest) => {
for(let val of rest){
console.log(`${val - }`);
}
};
arrowRest(1,2,3);// 1 - 2 - 3 -
不可以使用
yield
命令,因此箭头函数不能用作 Generator 函数。