一
普通函数:function( ){ }
箭头函数:( ) => { }
箭头函数写法上简单,而且在参数只有一个的时候可以不添加小括号,后方只有一个表达式的时候可以不添加大括号
(item) => { return item + 1 }; //最初的箭头函数表达式,只有一个参数和一个表达式
item = > item + 1 // 简化后的表达式
二
不能为箭头函数命名,因为箭头函数是匿名的;普通函数既可以是函数表达式,也可以是函数声明
三
箭头函数没有this指向问题,一般是全局对象,被普通函数包含指向上一层,而普通函数要考虑到this指向不定的问题 //这也是设计箭头函数的主要原因之一,但是并不代表箭头函数没有this,此处还涉及到一个概念函数:函数作用域,我也会单独出一篇笔记
四
普通函数可以用new来创建构造函数的实例,而箭头函数不行; //错误信息:Arrow is not a constructor
五
箭头函数没有arguments变量,而普通函数有,用来进行复用,实现更灵活的操作;
let arrow = () => arguments.length; //错误信息:arguments is not defined
六
函数也没有super和new target绑定,而普通函数有;
七
普通函数和箭头函数都可以使用call,apply和bind方法,普通函数可以通过调用上述方法修改this值,而箭头函数不可以通过以上方法修改this值