一、正常的函数的写法:
function 名字(){
}
二、箭头函数的写法:
() => {
}
- 如果只有一个参数,则圆括号可以省略
let show = (a) =>{
console.log(a);
};
let show = a =>{
console.log(a);
};
以上的两种写法是完全相同的。
- 如果函数里面只有一个return,则花括号连带return关键字一起省略:以下这两个函数的功能完全相同。但是如果箭头函数直接返回一个对象,必须在对象外面加上括号:
let show = function(a){
return 2*a;
};
let show = a => 2*a;
var getTempItem = id => ({id:id,name:"Temp"});
三、看如下例子:这两个函数的功能是一样的
window.onload = function(){
console.log("abc");
}
window.onload = () => {
console.log("abc");
}
//去掉function,再原来function的后面的圆括号的后面加上 =>
四、箭头函数传参:
let show = (a,b) => {
console.log(a+b);
};
show(1,2);
此例子的输出函数结果为3。
再看如下例子,我们知道sort不给参数排序会按照字符串的来进行排序:
var arr = [12,5,8,7,34,90];
arr.sort();
console.log(arr);
此时的排序结果为:12,34,5,7,8,90。那么我们怎么做呢?
方法一(之前的做法):
var arr = [12,5,8,7,34,90];
arr.sort(function(n1,n2){
return n1-n2;
});
console.log(arr);
方法二(ES6的做法):
var arr = [12,5,8,7,34,90];
arr.sort((n1,n2) =>{
return n1-n2;
});
console.log(arr);
五、箭头函数需要注意以下几项:
- 函数体内的this对象就是定义时所在的对象,而不是使用时所在的对象。在箭头函数中this是固定的,不是可变的。
- 不可以当作构造函数。也就是说,不可以使用new命令,否则会抛出一个错误
- 不可以使用argunemts对象,,该对象在函数体内不存在。如果用,可以使用rest参数代替
- 不可以使用yield命令,因此箭头函数不能用作Generator函数。