JAVA Script 論理演算子と関数の代入式の併用
JAVA Scriptに戻る。
概要
論理演算は、論理積【&】 や 論理和【|】 や 否定【!】で 1【true】 と 0【false】 の状態。真・偽の状態を演算するものです。その中でも比較論理演算【==】【===】は、二つのオブジェクトの値が等しいなら真、そうでないなら偽、のような演算における論理演算の且つ【&&】やあるいは【||】が使われます。一見すると、どんなオブジェクトが使われても、結果として取得できるとのは 1 と 0 のどちらかに思われますが、JAVA Scriptではそれほど単純ではありません。
且つ、あるいはの仕組みとして
true && true && false && true && … && true;
のような、「且つ」の使い方がされている中で一つでもfalseがあれば、それ以降を判定する必要が無く、false以降に何があろうと、falseになるため、その後ろは無視することができます。同じようなことで「あるいは」において
false || false || true || … || false;
のような使い方では、途中にtrueが一つでもあれば、それ以降を判定する必要はなく、trueであるため、移行を無視します。このような原理から、最初に登場する、true 以外の値や flase以外の値に敏感に反応し、最初に登場したその値そのものが結果になるという考え方がJAVA Scriptには取り込まれています。このことから
var bool1 = true && true || function(t){ alert(t) } || … || true; var bool2 = false || false || function(t){ alert(t) } || … || false;
このように記述された場合は bool1 や bool2 は、いづれも関数 function(t){ alert(t) } という値を保持するように動作します。このような動作は他のプログラム言語にはあまり見られない動きだと思います。わかりにくい記述であるため利用を避けてもよさそうなものですが、このような仕組みをおおいに使うプログラマもいます。実際、MathJaxライブラリでは多用されています。
JAVA Scriptに戻る。