为什么需要箭头函数

大家平时写项目,经常会使用箭头函数,因为箭头函数语法简洁,非常灵活,不能作为构造函数,没有this等等

大家有没有思考过为什么需要箭头函数

因为要消除函数的二义性,二义性是指:指令序列构造器

        1. 指令序列

指令序列就是把一个函数的指令从头到尾运行一遍

        2. 构造器

构造器是用来创建一个构造函数的实例对象

因为函数的二义性会导致js函数复杂度上升,因为一个函数在创建的时候,不知道未来的使用者会如何调用,有可能会通过new调用,也可能不会,不管怎么调用都不会报错

这就是函数两个层面的意思,在一个正统语言里面,既然这两个意思不一样,那么它的语法层面是应该分开的,不能混着用,但是在js中既可以直接调用,也可以使用new关键字调用,甚至混合调用,例如

Number()
new Number()
Date()
new Date()

这两种调用方式都可以,为了区分这两种调用方式

在ES6中消除了函数的二义性,引入了class箭头函数

ECMAScript 6新引入的class关键字具有正式定义类的能力,实际上它背后使用的仍然是原型和构造函数的概念,所以它就不具备指令序列的含义,当调用类时只能用new关键字调用否则会报错

想要深入了解ES6class类可以看这篇文章:ES6类class(详细介绍)

箭头函数只会表达指令序列,没有构造器这个含义,所以箭头函数不能通过new来调用,也就是说箭头函数跟所有面向对象有关的东西箭头函数都没有,

比如:newthis原型

打印箭头函数的原型,输出结果是undefined

想要深入了解箭头函数可以看这篇文章:JavaScript函数详细介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值