use*_*702 18 javascript callback
我正在使用的回调函数具有以下签名(来自http://api.jquery.com/load/):
complete(responseText, textStatus, XMLHttpRequest)
Run Code Online (Sandbox Code Playgroud)
现在,我只需要第三个参数.在Lua中有一个约定,其中使用下划线从函数中跳过不需要的返回值(跳过因为_实际上将保存该值):
var1, _, _, var4 = func()
Run Code Online (Sandbox Code Playgroud)
所以我想用JavaScript做类似的事情并设置我的函数签名:
function (_, _, XMLHttpRequest)
Run Code Online (Sandbox Code Playgroud)
这种方法有什么问题吗,也许有更好/更清洁的方法?
jAn*_*ndy 13
这项技术并不漂亮,但我自己多次使用它.我想,给那些未使用的参数提供有意义的名称(只是为了避免混淆)仍然要好得多,但你可以使用下划线.
我经常看到它在jQuery相关的回调中使用,其中index
经常作为第一个参数传递,比如
$('.foo').each(function(_, node) {
});
Run Code Online (Sandbox Code Playgroud)
因为大多数时候,你并不关心那里的指数.所以为了回答你的实际问题,使用这种技术没有什么不对(可能是混乱)并且没有更好/更清晰的方法来跳过不需要的参数.
Luk*_*kas 12
我承认使用_
是一种常见的模式,可以省略在您想要的参数前面添加的参数。对于一个参数来说这很酷,也许是 2 个参数。
somethingWithACallback((_, whatIAmLookingFor) => {
// ...
})
Run Code Online (Sandbox Code Playgroud)
但我被困住了,需要第五个。这意味着我必须写
somethingWithACallback((_, __, ___, ____, whatIAmLookingFor) => {
// ...
})
Run Code Online (Sandbox Code Playgroud)
对于这种情况,我建议采用这种模式:
somethingWithACallback((...args) => {
const whatIAmLookingFor = args[4];
})
Run Code Online (Sandbox Code Playgroud)
通过解构,你也可以这样做
somethingWithACallback((...args) => {
const [,,,,whatIAmLookingFor] = args;
})
Run Code Online (Sandbox Code Playgroud)
并将其应用于多个参数
somethingWithACallback((...args) => {
const [,,,,whatIAmLookingFor,,andAnotherThing] = args;
})
Run Code Online (Sandbox Code Playgroud)
从而基本上选择您需要的东西。
归档时间: |
|
查看次数: |
6958 次 |
最近记录: |