解读ECMAScript 6箭头函数
箭头函数是ECMAScript 6最受关注的更新内容之一。它引入了一种用「箭头」(=>)来定义函数的新语法,它…它碉堡了~。箭头函数与传统的JavaScript函数主要区别在于以下几点:
对 this 的关联。函数内置 this 的值,取决于箭头函数在哪儿定义,而非箭头函数执行的上下文环境。new 不可用。箭头函数不能使用 new 关键字来实例化对象,不然会报错。this 不可变。函数内置 this 不可变,在函数体内整个执行环境中为常量。没有arguments对象。更不能通过arguments对象访问传入参数。只能使用显式命名或其他ES6新特性来完成。这些差异的存在是有理可循的。首先,对this的绑定是JavaScript错误的常见来源之一。容易丢失函数内置数值,或得出意外结果。其次,将箭头函数限制为使用固定this引用,有利于JavaScript引擎优化处理。
语法箭头函数的语法很简单,定义自变量,然后是箭头和函数主体。自变量和主题因使用不同可以采用更简洁的格式。下面这个例子就是采用传一个参数和返回一个值的箭头函数。
var result = values.sort((a, b) => a - b);
数组的sort/map/reduce等方法都支持回调函数。用箭头函数可以简化书写流程,解放你的双手去做你想做的事情。
补充箭头函数的确与传统函数有不同之处,但仍存在共同的特点。例如:
对箭头函数进行typeof操作会返回“function”。箭头函数仍是Function的实例,故而instanceof的执行方式与传统函数一致。call/apply/bind方法仍适用于箭头函数,但就算调用这些方法扩充当前作用域,this也依旧不会变化。箭头函数与传统函数最大的不同之处在,禁用new操作。
结论箭头函数是ECMAScript 6一个备受关注的新特性,并且还在不断的优化着。用简短语法以定义函数或语句书写流程是大势所趋,他们必将屌炸天,无人可阻。它对关键字this的关联让开发者不再神烦,并通过JavaScript引擎优化,帮助其提高表现。说到这里,小伙伴们的大刀已经饥渴难耐了吧,若想试用箭头函数,打开最新版本的Firefox即可。
原文地址:http://www.nczonline.net/blog/2013/09/10/understanding-ecmascript-6-arrow-functions/