変数 a
が初期化されていることを判断するには、typeof
を使って、以下のように判断します。
変数 a
が初期化されていない場合は、変数 b
にデフォルト値として 100
を設定しています。
var b = (typeof a !== 'undefined') ? a : 100;
console.log(b); //=> 100
先に変数を a
を初期化しておくと、変数 b
には a
の値が代入されます。
var a = 0;
var b = (typeof a !== 'undefined') ? a : 100;
console.log(b); //=> 0
typeof
を使わずに、直接 undefined
値と比較しようとすると、a
が未定義のときに ReferenceError
が発生してしまいます(Strict mode で動作する場合)。
以下の例は、変数 a
の「定義」は行っていますが、「初期化」は行っていないので、結果として b
の値は 100
になります。
var a; // これも未初期化
var b = (typeof a !== 'undefined') ? a : 100;
console.log(b); //=> 100