JavaScript:函数中的“_”表示什么?

13

我正在浏览这个页面,它是用来学习bacon.js的幻灯片:http://raimohanska.github.io/bacon.js-slides/1.html

在第二个代码块的第一行中,它说:

function always(value) { return function(_) { return value } }

function(_)

的意思是什么?

在这个上下文中,_ 只是一个参数。 - Sam P
1
在 JavaScript 中这里没有意义,但是惯例是 _ 代表被忽略的值。 - Ry-
具有讽刺意味的是,“ignore this”并没有奏效,反而引起了OP的注意。我也从来没有听说过这个约定。很有趣。 - dfsq
3个回答

25
在这种情况下,_只是一个函数参数——单个下划线是一些程序员用来表示“忽略此绑定/参数”的约定。由于JavaScript不进行参数计数检查,因此可以完全省略该参数。这样的“丢弃”标识符在其他语言中更常见,但考虑一个情况,如arr.forEach(function (_, i) {..}),其中_表示第一个参数不应使用。

这样至少有点意义。谢谢分享。 - Oleg Gryb
1
F#(以及类似的语言)在模式匹配期间始终如一地执行此操作。C#也可以为lambda变量执行此操作。无论您正在审查的代码有多么无用,这绝对是常见的。 - Simon Whitehead
4
我在幻灯片中使用了这个约定以及Haskell类型签名。我更喜欢类型安全的语言,并倾向于在JavaScript代码中使用一些Haskell约定。对于造成的困惑,我表示歉意! - raimohanska
但如果它不会被使用,为什么不直接说函数(i)={...}呢?这不是一样的吗? - Victor
1
@Victor 这是一种惯例。参数实际上可以被称为unused(未使用)或 thisParameterIsNotUsedUsed(此参数未被使用)。 - user2864740
是的,我理解这是一种表示我们不使用它的约定,我只是没有理解有时我们只需要迭代器或索引值(键),在这种情况下回调函数将需要两个参数,当前值和索引。 - Victor

13

这是一个带有一个参数的匿名函数,该参数的名称是_

我不知道他们为什么要使用这个参数,因为该函数没有使用它。


点赞以取消踩,因为我非常确定这个答案是正确的。下划线成为第一个参数的名称。它没有被使用。 - Zach Lysobey
点赞以取消踩赞 - 这很有趣,但你说得对,周围确实有很多紧张的人 :) - Oleg Gryb
1
“我不知道为什么他们要使用这个参数,因为这个函数并没有用到它。” - jhyap

1
这与将任何其他标识符放入参数列表相同,根据此文档:http://mathiasbynens.be/notes/javascript-identifiers
您将在此文档中发现,_是标识符可以以其开头的合法字符。
在您的示例中没有任何含义,可能作者只是认为它比()更酷。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接