JavaScriptでオプションのパラメータをスキップする良い方法を教えてください。
たとえば、opt_
ここですべてのパラメータを破棄したいと思います。
goog.net.XhrIo.send(url, opt_callback, opt_method, opt_content, {'Cache-Control': 'no-cache'}, opt_timeoutInterval)
JavaScriptでオプションのパラメータをスキップする良い方法を教えてください。
たとえば、opt_
ここですべてのパラメータを破棄したいと思います。
goog.net.XhrIo.send(url, opt_callback, opt_method, opt_content, {'Cache-Control': 'no-cache'}, opt_timeoutInterval)
解決:
goog.net.XhrIo.send(url, undefined, undefined, undefined, {'Cache-Control': 'no-cache'})
スキップするオプションのパラメーターの代わりに使用する必要がundefined
あります。これは、JavaScriptのオプションのパラメーターのデフォルト値を100%シミュレートするためです。
小さな例:
myfunc(param);
//is equivalent to
myfunc(param, undefined, undefined, undefined);
強力な推奨事項:パラメーターが多数ある場合はJSONを使用し、パラメーターリストの中央にオプションのパラメーターを含めることができます。これがjQueryでどのように行われるかを見てください。
最も安全な賭けはundefined
であり、ほぼ遍在的に機能するはずです。ただし、最終的には、呼び出されている関数をだまして、パラメーターを本当に省略したと思い込ませることはできません。
短いという理由だけで使用することに傾倒していることに気付いた場合は、次の略記として名前がnull
付けられた変数を宣言することを検討してください。_
undefined
(function() { // First line of every script file
"use strict";
var _ = undefined; // For shorthand
// ...
aFunction(a, _, c);
// ...
})(); // Last line of every script
まず、次のことを知ってください。
typeof undefined
に評価します"undefined"
typeof null
に評価します"object"
したがって、関数が型であると想定する引数をとるとします"number"
。値として提供する場合null
は、それにを与えています"object"
。セマンティクスはオフです。1
開発者がますます堅牢なjavascriptコードを書き続けるにつれて、呼び出す関数がundefined
、クラシックとは対照的に、パラメーターの値を明示的にチェックする可能性が高くなりますif (aParam) {...}
。両方がたまたま強制されたという理由だけで、とnull
互換的に使用し続けると、不安定な状況になります。undefined
false
ただし、実際には、関数がパラメーターが実際に省略されたかどうかを判断できることに注意してください(に設定されているのではなくundefined
)。
f(undefined); // Second param omitted
function f(a, b) {
// Both a and b will evaluate to undefined when used in an expression
console.log(a); // undefined
console.log(b); // undefined
// But...
console.log("0" in arguments); // true
console.log("1" in arguments); // false
}
脚注
undefined
タイプ"number"
になることが全体の仕事です。これが、初期化されていない変数によって想定される値であり、関数のデフォルトの戻り値である理由です。null
パラメータ値として渡すだけです。
追加:実際の値を渡したい最後の後に続くすべてのオプションのパラメーターをスキップすることもできます(この場合、opt_timeoutInterval
パラメーターをすべてスキップできます)