考虑
function f() { ... }
而另一个函数则期望像f这样的函数
function dosomething(callback) { ...; callback() }
期望f(可以在setTimeout中设置dosomething的示例)
调用dosomething并传递f,两者之间是否有区别:
dosomething(f);
和
dosomething(() => f());
这些选项是否可取?
包装功能(第二个示例)是否为箭头功能在这里不会改变任何事情。
但是,此包装函数对于禁止参数传递很有用:在第一种情况下,如果callback
使用参数调用,则将其赋予f
。在第二种情况下不行。一种替代方法是限制所传递参数的数量:dosomething((a, b) => f(a, b));
。
它也可以用于防止this
注入:在第一种情况下,doSomething
可以bind
f
更改其this
(callback.bind(whatever)
)。使用包装功能(无论是否具有箭头),它都不会起作用,并且f
将保持其this
(全局上下文)的doSomething
作用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句