Panda Noir

JavaScript の限界を究めるブログでした。最近はいろんな分野を幅広めに書いてます。

三項演算子の解読

意外と難しいんですよね。三項演算子からifへの変換。 とりあえず手でゴリゴリやる方法まとめてみたいと思います。 まず始めに最初のif(条件文)の条件文にあたる部分を探します。 ここはそこまで戸惑うこともないと思います。 48 <= a && 49 >= a ? (a -= 48, e(a)) : 50 === a ? e("") : 51 === a && !1 === a.code ? e("") : 32 === a ? e("") :9 === a ? e("") : 1 === a && !0 === a.code ? e("") : 13 === a ? e("") : 6 === a || 35 === a ? e("") : 72 === a ? e("") : 73 === a ? e("") : 74 === a ? e("") : 75 === a ? e("") : 76 === a && e(""); 次に?と:を変えていきます。?を消すとよくわからなくなることがおおいので、とりあえずとっておきます。 ガリガリ…でこうなります。 if(48 <= a && 49 >= a) ? { (a -= 48, e(a)) }else : if(50 === a) ? { e("") }else : if(51 === a && !1 === a.code) ? { e("") }else : if(32 === a) ? { e("") }else :if(9 === a) ? { e("") }else : if(1 === a && !0 === a.code) ? { e("") }else : if(13 === a) ? { e("") }else : if(6 === a || 35 === a) ? { e("") }else : if(72 === a) ? { e("") }else : if(73 === a) ? { e("") }else : if(74 === a) ? { e("") }else : if(75 === a) ? { e("") }else : if(76 === a) e(""); まず?の前後をみて、)と{を後ろ、if(を前につけます。 次に:の前後をみて、}とelseをつけます。 ついでに&&などがあったら、そこも変えます(ラストのif(76 === a) e("")の部分です)。 最後に?と:を消して完成です。 if(48 <= a && 49 >= a){ (a -= 48, e(a)) }else if(50 === a){ e("") }else if(51 === a && !1 === a.code){ e("") }else if(32 === a){ e("") }else :if(9 === a){ e("") }else if(1 === a && !0 === a.code){ e("") }else if(13 === a){ e("") }else if(6 === a || 35 === a){ e("") }else if(72 === a){ e("") }else if(73 === a){ e("") }else if(74 === a){ e("") }else if(75 === a){ e("") }else if(76 === a) e(""); もちろんみじかくできます。 if(48 <= a && 49 >= a) (a -= 48, e(a)) else if(50 === a) e("") else if(51 === a && !1 === a.code) e("") else if(32 === a) e("") else :if(9 === a) e("") else if(1 === a && !0 === a.code) e("") else if(13 === a) e("") else if(6 === a || 35 === a) e("") else if(72 === a) e("") else if(73 === a) e("") else if(74 === a) e("") else if(75 === a) e("") else if(76 === a) e(""); 今回のコード、ある程度原型から崩したので、無駄が多いように見えますが、本当は違います。きちんとしてます。e("")がそれぞれ違います。 変換機欲しいのであとでやってみたいとおもいます。 この変換ってあまり需要ないかな…?