本文主要是介绍箭头函数存在的意义(消除函数的二义性),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
什么是箭头函数
箭头函数是ES6引入的一种快速定义函数的方式,本质上来说箭头还是本身就是一个匿名函数。
定义一个箭头函数
普通函数 | 箭头函数 |
---|---|
let f = function(){} | let f = () => {} |
箭头函数的写法
用途 | 定义 |
---|---|
完整箭头函数 | let f = (val) => {do} |
省略圆括号 | let f = val => {do} |
省略大括号 | let f = (val) => do |
省略圆、大括号 | let f = val => do |
箭头函数的注意事项
内容 | 条件 |
---|---|
是否有this | 没有 |
是否可以当作构造函数 | 不可以 |
是否可以使用arguments对象 | 不可以 |
是否可以使用yield命令 | 没有 |
通过以上的补充说明已经可以勾勒出一个箭头函数的使用场景 |
箭头函数存在的意义
无论是为了防止this指向还是说其他其实本质上所有的理由最终都是因为要消除
函数二义性
函数的二义性:这个概念是有面向对象语言衍生带来的
what do you want to do
即指令的序列化,必须明白的写清干什么,怎么干,每一步的执行new
new的过程我们称之为创建实例
function test () {todo}test()当然你可以 new test()
针对上述场景,当看到一个函数后在没有特别说明情况下你并不清楚这个函数应用什么形式的方式去执行(function Test
大写函数名称的方式是看习惯和约定来的不具备直接的区分度,并不是所有人都会将构造函数大写来做区分)
为了解决上述不明确的定义及调用方式ES6引入了两个新的成员
class test {} //类的定义 只能通过new调用产生
const test = ()=>{} //箭头函数 无法使用new,普通调用
类成员的定义在只作用于二义性的
new
过程
箭头函数只是一个指令的序列话过程,即干什么的过程。当没有实例的时候自然也就不需要this的介入,也就没有所谓原型这个说法了
这篇关于箭头函数存在的意义(消除函数的二义性)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!