|| について (Re: フレーム非対応のブラウザについて (|| について)
"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
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735