JavaScript之箭头函数

一、基本内容
在ES6中,新增了一种函数:Arrow Function箭头函数。
1、作用: 定义匿名函数
2、基本语法:
参数的情况:
(1)没有参数: () => console.log(‘xxxx’)

 let fun1 = () => console.log('lalala');
 fun1();

(2) 一个参数: i => i+2。只有一个形参的情况,括号()可以省略

 let fun2 = a => console.log(a);
 fun2('qqq');   //qqq

如上图中也可以写成let fun2 = (a)

(3)大于一个参数: (i,j) => i+j。括号不能省略

let fun3 = (x,y) => console.log(x,y);
 fun3(1,2);  //1,2

函数体的情况:
(1)函数体只有一条语句或是表达式的时候,{}可以省略。会自动返回语句执行的结果或者表达式执行的结果。

 let fun4 = (x,y) => x + y;
 console.log(fun4(1,2));  //3

注意,若写成

let fun4 = (x,y) => {x + y};

还会打印成3吗?
答案是不会的,会打印成undefined。

要加上return,才能得到我们想要的结果

let fun4 = (x,y) => {return x + y};

(2)函数体不止一条语句或者表达式,{}不可省略

let fun5 = (x,y) => {
   console.log(x, y);
   return x + y;
 }
   console.log(fun5(7,8));  //15

二、this指向
定义:箭头函数没有自己的this,箭头函数的this不是调用的时候决定的,而是在定义的时候处在的对象就是它的this。
这个定义并不是很好理解,这里有个扩展理解:
箭头函数的this看外层的是否有函数,
如果有,外层函数的this就是内部箭头函数的this,
如果没有,则this是window。

先在html里面定义id为btn的button按钮

let obj = {
                name:'qwer',
                getName:function(){
                  btn.onclick = () => {
                    console.log(this);
                  }
                }
              }
              obj.getName(); //打印obj

如上代码,外层有个常规函数function,由于obj.getName()的调用,所以它的this是obj。

let obj = { 
                name:'qwer',
                getName:() => {
                  btn.onclick = () => {
                    console.log(this);
                  }
                }
              }
              obj.getName();  //打印window

如上代码,虽然外层函数有,是箭头函数,但是也会指向window。
obj.getName可以理解成obj.getName = () => {};本质上是在window下定义的。

如有问题,欢迎指正,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值