2007-09-13

JavaScriptの論理演算でfalseと評価される値とは?

JavaScript の論理演算で false と評価される値を把握していないと、正しいコードだと思っていた式が期待どおりの結果にならないことに遭遇します。

JavaScript の 論理演算子の仕様は Core JavaScript 1.5 Guide:Operators:Logical Operators - MDC に詳しい説明がありますが、肌で感じようといくつか実際に試してみました。

↓試したパターンと結果は、次のとおりです。
alert(true || 'foo'); // true
alert(false || 'foo'); // 'foo'
alert(null || 'foo'); // 'foo'
alert(0 || 'foo'); // 'foo'
alert(0.0 || 'foo'); // 'foo'
alert('0' || 'foo'); // '0'
alert('' || 'foo'); // 'foo'
alert(undefined || 'foo'); // 'foo'
alert(NaN || 'foo'); // 'foo'
数値の 0 と文字列の '0' の評価が異なり、空文字 '' は false と評価されますので、直感とズレていると感じる方は、少し意識化しておく必要があります。
alert(NaN || 'foo'); // 'foo'
また Core JavaScript 1.5 Guide:Operators:Logical Operators - MDC に説明がありませんが、NaN は false と評価されるようです。

実例で学ぶGCCの本格的活用法―高機能コンパイラのオプション・コマンドを一つ一つていねいに解説 (TECHI―Embedded Software)実例で学ぶGCCの本格的活用法―高機能コンパイラのオプション・コマンドを一つ一つていねいに解説 (TECHI―Embedded Software)
岸 哲夫

GDBハンドブック ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道 μITRON準拠TOPPERSの実践活用―製品開発にも学習教材にも使えるフリーのOSプラットホーム (TECH I Embedded Software) x86アセンブラ入門―PC/ATなどで使われている80x86のアセンブラを習得 (TECHI―Processor) 組み込みソフトウェアの設計&検証―割り込み動作からRTOSを使った設計、ツールによる動作検証まで (TECH I Embedded Software)

by G-Tools

0 件のコメント: