次のようなデフォルトパラメータを宣言できますか
function myFunc( a, b=0)
{
// b is my optional parameter
}
JavaScriptで?
次のようなデフォルトパラメータを宣言できますか
function myFunc( a, b=0)
{
// b is my optional parameter
}
JavaScriptで?
ES6の場合:これは言語の一部になりました:
function myFunc(a, b = 0) {
// function body
}
ES6は、真実性に対してではなく、値をチェックすることに注意してくださいundefined
(したがって、実際の未定義の値のみがデフォルト値を取得します。nullなどの偽の値はデフォルトになりません)。
ES5の場合:
function myFunc(a,b) {
b = b || 0;
// b will be set either to b or to 0.
}
これは、明示的に渡すすべての値が真実である限り機能します。MiniGodのコメントによると真実ではない値:null, undefined, 0, false, ''
関数が実際に開始する前に、JavaScriptライブラリがオプションの入力に対して一連のチェックを実行するのを見るのはかなり一般的です。
ES6では、これはまさにあなたが説明した方法で可能です。詳細な説明は、ドキュメントに記載されています。
JavaScriptのデフォルトパラメータは、主に次の2つの方法で実装できます。
function myfunc(a, b)
{
// use this if you specifically want to know if b was passed
if (b === undefined) {
// b was not passed
}
// use this if you know that a truthy value comparison will be enough
if (b) {
// b was passed and has truthy value
} else {
// b was not passed or has falsy value
}
// use this to set b to a default value (using truthy comparison)
b = b || "default value";
}
この式b || "default value"
は、の値ANDを評価し、存在しないか偽の場合b
の値を返します。"default value"
b
代替宣言:
function myfunc(a)
{
var b;
// use this to determine whether b was passed or not
if (arguments.length == 1) {
// b was not passed
} else {
b = arguments[1]; // take second argument
}
}
特別な「配列」arguments
は関数内で利用できます。インデックス0
からN - 1
(N
渡される引数の数)までのすべての引数が含まれます。
これは通常、(同じタイプの)不明な数のオプションのパラメーターをサポートするために使用されます。ただし、予想される引数を記載することをお勧めします。
ES5以降は書き込み可能undefined
ではありませんが、一部のブラウザはこれを強制しないことが知られています。これが心配な場合は、次の2つの方法を使用できます。
b === void 0;
typeof b === 'undefined'; // also works for undeclared variables