考虑
function f() { ... }
和另一个函数dosomething期望像f
这样的函数function dosomething(callback) { ...; callback() }
期望f(dosomething的一个例子可以是setTimeout)
调用dosomething并传递f,之间有区别:
dosomething(f);
和
dosomething(() => f());
是否更适合这些选项?
答案 0 :(得分:4)
包装功能(第二个例子)是否为箭头功能不会改变这里的东西。
但是,这个包装函数对于禁止参数传递很有用:在第一种情况下,如果使用参数调用callback
,它将被赋予f
。不是在第二种情况下。另一种方法是限制传输的参数数量:dosomething((a, b) => f(a, b));
。
它还可用于防范this
注入:在第一种情况下,doSomething
可以bind
f
更改其this
({{ 1}})。使用包装功能(箭头与否),它将不会产生任何效果,callback.bind(whatever)
将保留f
(全局上下文),无论this
如何。