这个下划线在节点js中意味着什么
我在节点js代码库中看到了下面这行。
_ => { return resolve(abc);}
任何人都可以给我一些暗示,这是什么意思? 我知道=>是胖箭头function。 这条线是从一个承诺的片段。
这意味着不使用箭头函数参数。 他们使用_
作为箭头函数的参数名称。
这不是这个意思吗?
function(_){ return resolve(abc); }
这里发生的事情是,代码使用(一些)简洁的箭头函数语法。 要做到这一点,你会写这样的function:
var f = x => x*x;
根据文档
所以在你的例子中,参数x用一个_(一个有效的variables名字符)来命名:
var f = _ => {return resolve(abc)}
但是,它不需要返回或括号。 这可能只是:
_ => resolve(abc);
也许一个更可读的方式来写它将是与parathesis:
() => resolve(abc);
在这个问题的别处讨论的诱惑下,我会把我的意见变成一个答案。
首先,我假设你一般不会询问箭头函数,但只是对代码示例中的_
有好奇。
有一个约定(由一些使用)来声明和命名一个参数给一个你知道被传递的callback函数,但是你不会将下划线用作一种占位符。 这是人们阅读代码的信号,有一个parameter passing给这个callback函数,但是你不打算在这个特定的调用中使用它。 它的存在不是function性的,而是更多的
现在,在不知道开发者的头脑中写了什么问题,我们无法确定下划线是什么意思,但看起来似乎与之前描述的惯例相匹配。 callback只有一个参数,并不用于callback的实现。
所以,如果我们猜测这是一个惯例的使用是正确的,那么在你显示的箭头函数中:
_ => { return resolve(abc);}
它可能期待一个参数,但是这个callback函数的这个特殊用法并不打算使用它,所以他们用_
来命名它来表示这个。
现在,在Javascript中没有什么特别的原因,callback需要甚至定义一个像这样使用的单个参数。 callback可以被定义为:
() => { return resolve(abc);}
因为在Javascript中没有要求你声明你不打算使用的参数。
如果callback函数有两个参数,而且这是第一个你不打算使用的参数,那么为了允许访问第二个参数,它必须声明为某些东西:
(_, secondArg) => { return resolve(secondArg);}