ES6:箭头函数

本文介绍了ES6中引入的箭头函数,它简化了函数定义的语法。例如,可以省略大括号当函数体只有一行代码,或者省略单个参数的小括号。箭头函数的一个特性是其不绑定this,而是继承外层作用域的this。文中还通过一个面试题展示了箭头函数中this的指向问题,强调了箭头函数在对象方法中的使用会导致this不是预期的对象属性,因此可能导致错误的结果。
摘要由CSDN通过智能技术生成

ES6中新增的定义函数的方式 (箭头函数是用来简化函数定义语法的)

() => { }
const fn = () => { }

1、在箭头函数中,函数体中只有一句代码,且代码的执行结果就是返回值,可以省略大括号

const sum = (num1,num2) => num1+num2;
const result = sum(10,20);
console.log(result);

2、如果形参只有一个,可以省略小括号

function fn(v){
           return v;
       }
       
//简化后的写法
const fn = v => v;

3、箭头函数不能绑定this关键字,箭头函数中的this,指向的是函数定义位置的上下文this

	   const obj = {name:"张三"}

       function fn(){
           console.log(this);
            //箭头函数没有自己的this,所以箭头函数的this是指向fn()的this,
            //而fn()中的this通过call绑定到了obj对象上
           return () => {
               console.log(this);
           }
       }

       //将fn中的this指向obj对象,定义resFn来接收匿名函数返回的结果,此时这个匿名函数也是个箭头函数
       const resFn = fn.call(obj);
       //输出this,此时的this指向的也是obj对象
       resFn();

一道面试题:以下代码弹出的结果是什么?

const obj = {
           age:18,
           say:() => {
               alert(this.age)
           }
        }

        obj.say();

答案是undefined,这是因为对象是不能产生作用域的!这个say()箭头函数是被定义在了全局的作用域上,所以say()里面的this指向的是window,而age属性在全局作用域上没有定义,所以弹出的是undefined

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值