这个下划线在节点js中意味着什么

时间:2017-07-11 19:47:37

标签: javascript node.js

我在节点js代码库中看到了以下行。

_ => { return resolve(abc);}

任何人都可以给我一些暗示这个_的含义吗? 我知道=>是胖箭功能。这一行来自一个承诺的片段。

4 个答案:

答案 0 :(得分:3)

这意味着不使用箭头函数参数。他们使用EmailComponent.ts作为箭头函数的参数名称。

答案 1 :(得分:1)

这不是这个意思吗?

function(_){
    return resolve(abc);
}

答案 2 :(得分:1)

这里发生的是代码使用(某些)箭头函数的简洁语法。要做到这一点,你要写一个这样的函数:

var f = x => x*x;

根据the docs

因此,在您的示例中,参数x以_(变量名称的有效字符)命名:

var f = _ => {return resolve(abc)}

但是,它也不需要返回或括号。它可能只是:

_ => resolve(abc);

写一个更可读的方式也许就是这个:[/ p>

() => resolve(abc);

答案 3 :(得分:1)

在这个问题的其他地方进行讨论时,我会将我的意见转化为答案。

首先,我假设您一般不会询问箭头函数,但只是对代码示例中的_感到好奇。

有一个约定(由某些人使用)来声明和命名一个你知道传递的回调函数的参数,但你不会使用下划线作为一种占位符。对于阅读代码的人来说,这是一个信号,表明有一个参数被传递给这个回调,但你不打算在这个特定的调用中使用它。它的存在不起作用,但更多的是

现在,在不知道编写您所询问的代码行的开发人员的头脑中,我们无法确切知道下划线的含义,但它确实看起来与之前描述的约定相符。回调有一个参数,它不用于回调的实现。

因此,如果我们猜测这是使用该约定是正确的,那么在您显示的箭头函数中:

_ => { return resolve(abc);}

可能期待一个参数,但是这个回调的特殊用法并没有计划使用它,因此他们用_命名它只是为了发出信号。

现在,Javascript中没有特别的原因,回调甚至需要定义一个像这样使用的参数。回调也可以定义为:

() => { return resolve(abc);}

因为Javascript中没有要求您声明您不会使用的参数。

如果回调有两个参数并且它是你不会使用的第一个参数,那么它必须被声明为允许访问第二个参数的东西:

(_, secondArg) => { return resolve(secondArg);}