ES6箭头功能,无参数

时间:2016-04-19 00:22:01

标签: javascript ecmascript-6

考虑

function f() { ... }

和另一个函数dosomething期望像f

这样的函数
function dosomething(callback) { ...; callback() } 

期望f(dosomething的一个例子可以是setTimeout)

调用dosomething并传递f,之间有区别:

dosomething(f);

dosomething(() => f());

是否更适合这些选项?

1 个答案:

答案 0 :(得分:4)

包装功能(第二个例子)是否为箭头功能不会改变这里的东西。

但是,这个包装函数对于禁止参数传递很有用:在第一种情况下,如果使用参数调用callback,它将被赋予f。不是在第二种情况下。另一种方法是限制传输的参数数量:dosomething((a, b) => f(a, b));

它还可用于防范this注入:在第一种情况下,doSomething可以bind f更改其this({{ 1}})。使用包装功能(箭头与否),它将不会产生任何效果,callback.bind(whatever)将保留f(全局上下文),无论this如何。