ES6 箭头函数

箭头函数

前言

箭头函数是ES6引入的一个函数的新写法,但又在一些特殊情况下与普通函数存在区别。

创建一个箭头函数

let arrow = ()=>{
	console.log('我是箭头函数');
}

像上面这样,() => {} 就是一个箭头函数。但箭头函数由于没有名字,所以我们只能以函数表达式的形式给他取名字。与传统的函数定义相比起来,看起来更简洁了。

function normal(){
	console.log('我是普通函数');
}

箭头函数的传参

当有参数只有一个时,无需括号

let arrow2 = a => '我是箭头函数';

在这里插入图片描述

通过上面的代码以及运行结果,我们可以看出,参数值有一个时,括号可以被省去。且函数体只有一句代码时,也可以去掉大括号{}。且他的返回值就是该代码('我是箭头函数')。

箭头函数的this

箭头函数时没有this属性的,它的this属性继承自包裹它的函数或者对象。

var d = {
	color: 'red',
    fn: () => {
		console.log(this);
    },
    fn2: function () {
        return this;
    }
};
console.log(d._this);//window
d.fn();//window
d.fn2();//d

在这里插入图片描述

上边的代码中的箭头函数是来自b,所以输出与b的this指向保持一致。

箭头函数不存在arguments属性

let arrow = () => {
	console.log(arguments);
};
arrow();

在这里插入图片描述

箭头函数的应用

function Counter() {
        this.num = 0;
        setInterval(function () {
          this.num++;
          console.log(this.num);
        }, 100);
      }
      var c = new Counter();

在这里插入图片描述

由于setInterval计时器的调用者是window,所以此时this应该是window,但全局下并没有找到num,值即为undefined,所以undefined++会变成NaN

此时我们使用this就可以解决这种问题,箭头函数可以说就是为了回调函数而生。

function Counter() {
        this.num = 0;
        setInterval(() => {
          this.num++;
          console.log(this.num);
        }, 100);
      }
      var c = new Counter();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值