【发布时间】:2017-02-28 07:13:34
【问题描述】:
我正在寻找一种在不声明一个或多个参数的情况下声明函数的方法。这将用于您正在实现一个函数而您不关心(例如)第一个参数的值是什么的情况。
例如,给定这个函数:
function foo(this_arg_is_unused, important_arg) {
doSomethingWith(important_arg);
}
有没有办法像这样声明它?
function foo( , important_arg) {
doSomethingWith(important_arg);
}
我意识到我可以轻松做到这一点:
function foo() {
doSomethingWith(arguments[1]);
}
然而,这开始变得不那么可读了,并且(例如)使用 fn.js 来柯里化参数会更加困难。
我目前在想也许我可以使用视觉助记符来指示未使用该参数:
function foo(ø, important_arg) {
doSomethingWith(important_arg);
}
但是这也可能存在可读性问题。
现实世界的例子:
jQuery's .each() 使用的回调函数有两个参数,第一个是数组/对象中的索引或属性名称,第二个是值。要操作一些 div 元素,您可以执行以下操作:
$($('div').each(function(index, value) {
console.log(value); // equivalent to doSomething(this)
}));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Nothing here</div>
使用箭头函数(无法使用 arguments[])
$($('div').each((ø, value) => console.log(value)));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>Nothing here</div>
【问题讨论】:
-
我不认为 JavaScript 对此有任何语言支持。 Haskell 约定是使用以下划线开头的名称(例如
_index)。 -
@joews 你没看过真实世界的例子吗?经常。大多数人甚至都懒得为
.each()参数提供回调,因为this很方便——但你不能在箭头函数中使用this -
我总是使用
_作为无关参数。 -
...你可以像
function x(...a){ carryOnWith(...a.slice(1)) }一样做 -
@Redu
_也是我的首选,但至少有几个库正在使用它(下划线、gettext),我想避免潜在的问题
标签: javascript syntactic-sugar