- 箭头函数的介绍
- 箭头函数的定义方式
- 箭头函数的优点
- 箭头函数与匿名函数的区别
箭头函数的介绍
箭头函数(Arrow Function)是ES6标准新增的一种的函数 箭头函数就是定义时使用的是箭头。
箭头函数的定义方式
下面是其几种常见的定义方式:
无函数名
参数=>函数体(相当于匿名函数,省略了return和花括号)
1
x => x*5
等价于
1
2
3function(x){
return x*5;
}调用:
1
2let t = (x=>5*x)(8) //自运行数
console.log(t);//输出40有函数名
let 函数名 = 参数=>函数体
1
let f = x*x;
等价于
1
2
3let f = function(x){
return x*x;
}调用:
1
console.log(f(8)); //输出64
函数体有多条语句
不能省略函数体的花括号和return
1
2
3
4
5
6
7x=>{
if(x>0){
return x*x;
}else{
return -x*x;
}
}函数有多个参数
参数要用括号括起来
1
(x,y)=> x>y?x:y;
定义并运行:
1
2
3
4
5
6
7var t = ((x,y)=>x>y?x:y)(12,5);//立即运行
console.log(t);
//定义
//var f = (x,y)=>x>y?x:y;
//调用
//console.log(f(12,5));无参
参数要用括号括起来
1
()=>24*3200;
可变参数
1
2
3
4
5
6
7
8
9var f = (a...end)=>{ //相当于把省略号的所有值,作为数组end处理
var sum = a;
for(var i = 0;i<end.length;i++){
sum +=end[i];
}
return sum;
}
console.log(f(1,2,3,4,5));//调用返回值是对象
1
2
3
4
5var f = (id,name)=>({
id:id,name:name
}); //函数体必须要用()括起来 对象的花括号和函数体的花括号冲突
console.log*(f("007","张无忌").id);
箭头函数的优点
对this转移的处理:箭头函数内部的this是词法作用域,由上下文确定。
原来的代码:
1 | var that = this; |
用箭头函数的代码:
1 | this.bannerTimer = srtInterval( |
箭头函数与匿名函数的区别
箭头函数看上去是匿名函数的一种简写,但实际上,箭头函数和匿名函数有个明显的区别:
- 箭头函数内部的this是词法作用域,由上下文确定。
- 匿名函数中的this指向,一般指向window或者undefined。