jsの三項演算子であそんでみた
三項演算子の基本
条件式 ? 式 : 式 ;
ですね。
まずは基本
false ? b = 0 : b =1;
b -> 1
改行できる
false
?
b = 0
:
b = 1;
b -> 1
複数の処理もできる。
false ? (a=1 , b=2) : (a = 2, b= 1);
a -> 2
b -> 1
関数を式として見てみると
こんな芸当もできる。
function hoge(){ b = 48; return a = 34; } hoge() ? c=0:c=1; a -> 34 b -> 48 c -> 0
ヒマじゃないんだけど
色々思いついてしまう。
即時関数を使って無名関数を埋め込む
function hoge(){ a = 0 }; false ? ( function(){ a=1 })() : hoge(); a->0 true ? (function(){ a=1 })() : hoge() ; a->1
次は再帰やってみるか
a=0; var hoge = function(){ a+=1; a?a-=2: hoge(); }; hoge() ->VM68515:4
そりゃできるか。
ぼくの頭でできる実験はこれくらいです。
javascriptは奥が深いというより、理念に忠実なイメージ
式とか値とか 化けてる奴でもちゃんと動く。
この三項演算子がいい例ですね。
おまけ
c = (c = 0) ? c = 1: c = 2; c->2
なんてことない c = 2 なんだけど、なんか不思議。