web-dev-qa-db-ja.com

関数の引数を示すための標準的な規則はJavaScriptでは使用されません

JavaScriptで関数引数を未使用としてマークする標準的な方法はありますか。Rubyでアンダースコアを使用してメソッド引数を開始するのに似ていますか?

29
Andrew Grimm

動作する例があります。これは、jQueryの$.eachでかなり一般的です。ここでは、反復コールバックでインデックスだけでなく値だけを必要とするコードを記述しています($.eachArray#forEach)に対して後方:

$.each(objectOrArrayLikeThing, function(_, value) { }
    // Use value here
});

_を使用するのが標準的な方法に最も近い方法です。もちろん、他にもたくさんあります-とにかくその目的を反映した名前を付けます(index) 、それをunusedなどと呼びます.

複数のパラメーターを無視する必要がある場合、同じ識別子を繰り返すことはできません( strictモードでは許可されていません 、これは全員のデフォルトである必要があり、モジュールおよびclassでデフォルトです)構造体)、したがって、あなたは_0_1または___などのようなことをします。

24
T.J. Crowder

破壊をサポートするブラウザを使用すると、次のことができます。

function ({}, {}, value) {
  // console.log(value)
}

同じ名前の複数の引数の問題を回避し、メソッドを_(lodash、アンダースコアなど)に割り当てるライブラリで問題を発生させないという点で、これは一種のきちんとしたものです。

このアプローチの1つの問題は、undefined型またはnull型の未使用の引数がスローされることです。

undefinedの解決策の1つは、デフォルトのパラメーターを使用することです。

function ({}={}, {}={}, value) {
  // console.log(value)
}

悲しいことに、nullにこのような簡単に適用できるソリューションはありません。

19

私はこの構文をお勧めします:

function(_index, value) {...}

lodash変数を隠さず、使用される場合に備えて引数の説明を保持します。

VS Codeはこれらの名前も適切に強調表示し、これらの未使用の引数は自動修正コードの匂いがした後に削除されません

2
MarkosyanArtur

functionargumentsオブジェクトの使用はどうですか?

function third() { const [,,thirdArg] = arguments;
  return thirdArg;
}
console.log(third(1,2,3));
0
Doug Coburn