Javascript で次のようなものを見ました:
function name (secret) {
secret = secret || {};
secret = secret || secret = secret ||を正確に意味するものはどこにも見つかりません。{};
渡された引数またはオブジェクトの値でグローバル変数を作成するということですか?
いつ使うの?引数が渡されない場合は?
Javascript で次のようなものを見ました:
function name (secret) {
secret = secret || {};
secret = secret || secret = secret ||を正確に意味するものはどこにも見つかりません。{};
渡された引数またはオブジェクトの値でグローバル変数を作成するということですか?
いつ使うの?引数が渡されない場合は?
変数secret
が偽の場合 (次のいずれか):
false
0
''
(空文字列)null
undefined
NaN
..次に、{}
(空のオブジェクト - と同じnew Object()
です) に設定します。
次のように書くこともできます。
if (!secret) secret = {};
しかし、より長いため、ほとんどの人は上記を好みます。
JavaScript にはデフォルトの関数パラメーターがないため、このソリューションは便利です。
たとえば、PHP の例は次のようになります。
<?php
function foo($bar = 'default') {
echo $bar;
}
?>
そしてJSでは
function foo(bar) {
bar = bar || 'default';
console.log(bar);
}
foo(); //default
foo(NaN); //default
foo(undefined); //default
foo(null); //default
foo(false); //default
foo(0); //default
foo(''); //default
foo('something'); //something
foo(12); //12
foo(1.2); //1.2
値がない (偽の値がない)ことだけtypeof
を確認したい場合は、JS で関数を使用できます。
function foo(bar) {
if (typeof bar == 'undefined') bar = 'default';
console.log(bar);
}
foo(); //default
foo(undefined); //default
foo(NaN); //NaN
foo(null); //null
foo(false); //false
foo(0); //0
foo(''); //(empty string)
foo('something'); //something
foo(12); //12
foo(1.2); //1.2