"M.Wada" <m-wada@japan.com> writes:
>>   var b = document.documentElement ? document.documentElement : document.body;
>> でもそりゃ長いし同じことだから
>>   var b = document.documentElement || document.body;
>> と書くようにしてます。

> Logical Operaterは必ずBooleanを返す系統の言語育ちで、
> JavaScriptはNetscape2.2の頃のJavaScript 1.1ベースの知識だったので
> ちょっと驚きました。
> でも、便利ですね。

C 等から入ると、そうでしょうね。私はCより先にLISPを知ったので
(当時日本語のCの本が無かった)、C の && || が 0 か 1 しか返さないのは
違和感があり不便に思いました。まあ、変数に型のある言語なので両辺の型が
違う場合とかを考えるとしょうがないのかもしれません。
新しい言語はあまり知らないのですが、Boolean 以外の値に && || が使える言語で
結果に Boolean しか返さない言語って C類 の他にメジャーな範囲では何があります?
(Cの場合Booleanじゃないという突っ込みはしないでください)

かなり前になりますが、fj のどこかで、
(1) && || 演算子は、左辺の値によって右辺が評価されたりされなかったり
   するのが演算子の意味として本質的である
(2) && || 演算子は、論理演算処理が本質的であり、右辺が評価されたり
   されなかったりは、最適化/高速化のために過ぎない
という議論をした覚えがあります。
私は(1)の立場。
andthen orelse というふうに(1)であることがよくわかる演算子の言語もありましたね。
ADAだっけ?

Followup-To: fj.comp.lang.misc にしました。
-- 
tksotn