前端面试解析-02 ES6使用箭头函数时应该注意什么?

1、this的指向问题

    箭头函数要实现类似纯函数的效果,剔除了外部状态,所以箭头函数不具备普通函数所具备的this、arguments等。

    箭头函数自身没有this,箭头函数内部this会继承自箭头函数外部作用域,并且,不能通过apply()、call()、bind()去改变this指向。下面为代码说明。

const obj1={
    fun1:()=>{
        console.log(this);   //this指向window
    },
    fun2:function(){
        console.log(this);    //this指向obj1
    }
}

obj1.fun1();  //在全局对象window下生效 指向window


obj1.fun2();    //在持有函数对象生效  指向obj1

2、arguments关键字

    对于普通函数来说,可以使用arguments关键字来获取到当前函数传入的参数,但是在箭头函数中不存在,如果想达到类似效果,可用rest代替。

//普通函数
function fun1(a,b){
	console.log(arguments[0]);
    console.log(arguments[1]);
}
fun1("aaa","bbb");    //打印 aaa、bbb
    

    注意:arguments是一个object对象,它不是数组,不能对它使用shift、push、join等方法。
    上述举例时用的arguments[i]中的i只是作为arguments对象的属性,并不能理解为数组下标。

//ES6 引入 rest 参数(形式为...变量名),用于获取函数的多余参数。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。
function add(...values) {
let sum = 0;
  for (var val of values) {
    sum += val;
  }
  return sum;}

add(2, 5, 3)  //10 上面代码的add函数是一个求和函数,利用 rest 参数,可以向该函数传入任意数目的参数

本文内容均来自于网络,仅用于学习使用及知识共享。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值