Sep 22, 2005
三項演算子の正しい書き方ってあるのだろうか
最近は、三項演算子を多用しているのだけれど、やっぱり人が使ってるのを見ると気持ち悪い。
http://d.hatena.ne.jp/brazil/20050921/1127314004
これは解読するのにやたら時間がかかる気がする。コロンの後が値なのか条件なのかわからないからだ。
俺ならこう書く。
三項演算子を使うときは、条件はどんなに短くても必ずカッコで囲って、先頭に持ってくるようにしている。
条件をカッコで囲うだけでも、かなり読みやすくなる気がする。
このコードはこういう風に読み替えることができる。
あるいはこういう風に。
脳内補完されるコードと近いので、動作が想像しやすいんじゃないかと思う。
実際はif else使う場合はTest.Builder.globalScope = windowみたいに全部代入文にしないといけないしswitch文の場合はbreakも必要になるので、三項演算子を使ったほうが、はるかに短く書ける。
しかし、三項演算子でif elseを全部置き換えられるかというとそうでもなくて、returnとかcontinueとかbreakとか、値を返さない制御文の類を使うことはできない。
あと、イコールの後に改行はOKなんだけどreturnの後に改行するとJavaScriptはセミコロンが省略されてると見なしてうまくいかない。
http://d.hatena.ne.jp/brazil/20050921/1127314004
Test.Builder.globalScope = typeof JSAN != 'undefined'
? JSAN.globalScope
: typeof window != 'undefined'
? window
: typeof _global != 'undefined'
? _global
: null;
これは解読するのにやたら時間がかかる気がする。コロンの後が値なのか条件なのかわからないからだ。
俺ならこう書く。
Test.Builder.globalScope = (typeof JSAN != 'undefined') ? JSAN.globalScope : (typeof window != 'undefined') ? window : (typeof _global != 'undefined') ? _global : null;
三項演算子を使うときは、条件はどんなに短くても必ずカッコで囲って、先頭に持ってくるようにしている。
条件をカッコで囲うだけでも、かなり読みやすくなる気がする。
このコードはこういう風に読み替えることができる。
if (typeof JSAN != 'undefined') { JSAN.globalScope }
else if (typeof window != 'undefined') { window }
else if (typeof _global != 'undefined') { _global }
else { null };
あるいはこういう風に。
switch(true){
case (typeof JSAN != 'undefined') : JSAN.globalScope
case (typeof window != 'undefined') : window
case (typeof _global != 'undefined') : _global
default : null ;
}
脳内補完されるコードと近いので、動作が想像しやすいんじゃないかと思う。
実際はif else使う場合はTest.Builder.globalScope = windowみたいに全部代入文にしないといけないしswitch文の場合はbreakも必要になるので、三項演算子を使ったほうが、はるかに短く書ける。
しかし、三項演算子でif elseを全部置き換えられるかというとそうでもなくて、returnとかcontinueとかbreakとか、値を返さない制御文の類を使うことはできない。
あと、イコールの後に改行はOKなんだけどreturnの後に改行するとJavaScriptはセミコロンが省略されてると見なしてうまくいかない。
WriteBacks
JavaScriptの演算子(2)
今回は、前回の記事「JavaScriptの演算子」の続きです。
今回はプログラム初心者の方には理解しにくい部分が多く、きっと一度読んだだけでは理解できないと思うので、何回か読んでいただくか、もっと進んでいけばだんだんわかってくると思うので、なんとなくでも頭に入れておいてください。
それでは、JavaScriptの演算子を一つ一つみていきましょう。
1. ビット演算子
ビット単位での処理を行う演算子です。
早速わからない言葉が出てきましたね。
ここであれこれ説明するよりも、直接例を見ていただいたほうが理解しやすいと思うので、いくつか例を書きます。
Posted by ネットビジネス用CGI Perl HTML Javascriptの情報サイト at 2006/03/22 (Wed) 08:06:38
annuncio lavoro
Blog Records:le tireur isol辿 de psg1 airsoft fusillentComments...
Posted by annuncio lavoro at 2006/11/27 (Mon) 19:43:12
annuncio lavoro
Blog Records:le tireur isol辿 de psg1 airsoft fusillentComments...
Posted by annuncio lavoro at 2006/11/27 (Mon) 19:43:19
[Ruby]RubyでFizzBuzzかけたよ!+いろいろ考えてみた
404 Blog Not Found:やる気ってどこでやる気? 経由で見つけた↓の記事。 1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
Posted by バイオ研究者見習い生活 with IT at 2008/03/15 (Sat) 18:30:21
Posted by ピュアアイ at 2010/05/19 (Wed) 18:11:56
Posted by ピュアアイ at 2010/05/19 (Wed) 18:12:08
Posted by ピュアアイ at 2010/05/19 (Wed) 18:12:14
Posted by ピュアアイ at 2010/05/19 (Wed) 18:12:20
Posted by ピュアアイ at 2010/05/19 (Wed) 18:12:26
Posted by ピュアアイ at 2010/05/19 (Wed) 18:12:34
Posted by ピュアアイ at 2010/05/19 (Wed) 18:13:53
Posted by ピュアアイ at 2010/05/19 (Wed) 18:13:59
Posted by ピュアアイ at 2010/05/19 (Wed) 18:14:18
Posted by ピュアアイ at 2010/05/19 (Wed) 18:21:23
Posted by ピュアアイ at 2010/05/19 (Wed) 18:22:04
Posted by ピュアアイ at 2010/05/19 (Wed) 18:22:52
Posted by ピュアアイ at 2010/05/19 (Wed) 18:22:59
Posted by ピュアアイ at 2010/05/19 (Wed) 18:23:09
Posted by ピュアアイ at 2010/05/19 (Wed) 18:23:17
Posted by ピュアアイ at 2010/05/19 (Wed) 18:23:23
Posted by ピュアアイ at 2010/05/19 (Wed) 18:23:29
Posted by ピュアアイ at 2010/05/19 (Wed) 18:23:36
Posted by ピュアアイ at 2010/05/19 (Wed) 18:23:42
Posted by ピュアアイ at 2010/05/19 (Wed) 18:23:47
Posted by ピュアアイ at 2010/05/19 (Wed) 18:23:54
Posted by ピュアアイ at 2010/05/19 (Wed) 18:24:02
Posted by ピュアアイ at 2010/05/19 (Wed) 18:24:08
Posted by ピュアアイ at 2010/05/19 (Wed) 18:24:17
Posted by ピュアアイ at 2010/05/19 (Wed) 18:24:23
Posted by ピュアアイ at 2010/05/19 (Wed) 18:24:29
Posted by ピュアアイ at 2010/05/19 (Wed) 18:24:35
Posted by ピュアアイ at 2010/05/19 (Wed) 18:25:37
Posted by ピュアアイ at 2010/05/19 (Wed) 18:25:43
Posted by ピュアアイ at 2010/05/19 (Wed) 18:25:48
Posted by ピュアアイ at 2010/05/19 (Wed) 18:25:54
Posted by ピュアアイ at 2010/05/19 (Wed) 18:25:59
Posted by ピュアアイ at 2010/05/19 (Wed) 18:26:05
Posted by ピュアアイ at 2010/05/19 (Wed) 18:26:11
Posted by ピュアアイ at 2010/05/19 (Wed) 18:26:16
Posted by ピュアアイ at 2010/05/19 (Wed) 18:26:21
Posted by ピュアアイ at 2010/05/19 (Wed) 18:26:26
Posted by ピュアアイ at 2010/05/19 (Wed) 18:26:32
Posted by ピュアアイ at 2010/05/19 (Wed) 18:26:39
Posted by ピュアアイ at 2010/05/19 (Wed) 18:26:45
Posted by ピュアアイ at 2010/05/19 (Wed) 18:26:51
Posted by ピュアアイ at 2010/05/19 (Wed) 18:26:57
Posted by ピュアアイ at 2010/05/19 (Wed) 18:27:02
Posted by ピュアアイ at 2010/05/19 (Wed) 18:27:10
Posted by ピュアアイ at 2010/05/19 (Wed) 18:27:17
Posted by ピュアアイ at 2010/05/19 (Wed) 18:27:22
Posted by ピュアアイ at 2010/05/19 (Wed) 18:27:27
http://la.ma.la/blog/diary_200509220220.trackback
writeback message: Ready to post a comment.

