JS-从箭头函数的创建初衷探讨与function的区别

前言

箭头函数和function的区别是一个老生常谈的问题。追根求源,为什么需要箭头函数来与function做出区分呢? 难道就是因为箭头函数的写法更简洁?显然不是,本文与大家一起讨论一下。

function的二义性

function可以用来创建构造函数;也能用来创建普通的执行函数,用来处理特定的事件。一般命名方式为大驼峰的是构造函数反之则是普通的执行函数。 但是仅仅依靠代码规范来区分是不可靠的;基于这个原因,es6新增了class 和 箭头函数来分化function的两个功能。 箭头函数仅用于创建普通的执行函数。

区别:

  1. 箭头函数没有自己的this指向;
  2. 箭头函数的this指向不可更改;
  3. 箭头函数没有原型。

因为箭头函数的功能就是创建普通的执行函数的,跟面向对象没有关系,所以

  1. 他不需要创建自身的this,所以它只能捕获定义时外层的this指向;并且继承;
  2. 那么基于第一点,因为this指向都是继承的那么就更加不能改了;
  3. 因为与面向对象没有任何关系,所以他也不需要原型(原型是实现面向对象的一种方式)

其他区别

  1. 写法更加简洁;函数仅有返回语句时可以省略大括号和return
const func = (name) => name
func("zhangsan") // "zhangsan"
  1. 箭头函数没有arguments参数对象;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值