kof*_*fus 5 javascript ecmascript-6
考虑
function f() { ... }
Run Code Online (Sandbox Code Playgroud)
另一个函数dosomething期望像f这样的函数
function dosomething(callback) { ...; callback() }
Run Code Online (Sandbox Code Playgroud)
期望f(dosomething的一个例子可以是setTimeout)
调用dosomething并传递f,之间有区别:
dosomething(f);
Run Code Online (Sandbox Code Playgroud)
和
dosomething(() => f());
Run Code Online (Sandbox Code Playgroud)
这些选项中的任何一个都比较好
包装函数(第二个示例)是否是箭头函数不会改变这里的情况。
然而,这个包装函数对于禁止参数传输很有用:在第一种情况下,如果callback使用参数调用,它将被赋予f. 第二种情况则不然。另一种方法是限制传输参数的数量:dosomething((a, b) => f(a, b));。
它还可以用于防止this注入:在第一种情况下,doSomething可以bind f更改其this( callback.bind(whatever))。使用包装函数(无论是否有箭头),它不会产生任何效果,并且f会保留他的this(全局上下文)doSomething。
| 归档时间: |
|
| 查看次数: |
5012 次 |
| 最近记录: |