先日jQueryのソースコードをのぞいたときに三項演算子使いまくりで全然理解できなかったので、以下のサイトを参考に、今さらながらJavaScriptの三項演算子を勉強してみました。
JavaScriptの三項演算子の書き方
<条件> ? <真の場合の値> : <偽の場合の値>
試しに書いてみる
現在のUNIX時間が偶数ならtrue、奇数ならfalseと表示する場合のコード。UNIX時間を求める関数は、[JavaScript]UnixTimeを取得する : うえちょこ@ぼろぐ を参考にしました。
function getUnixTime() { return parseInt((new Date) / 1000); } function hoge() { var now = getUnixTime(); var x = (now % 2 == 0) ? true : false ; alert(x); }
値を返すだけでなく、関数を実行することもできる。
function getUnixTime() { return parseInt((new Date) / 1000); } function hoge() { var now = getUnixTime(); (now % 2 == 0) ? alert("true") : alert("false") ; }
データ型ごとの条件式の評価について
if文中の条件式の内部ではtrueかfalseの値を受け取る、と言ったが、正確には型ごとにその扱いは違う。 それぞれの型ごとに、falseとなる条件を挙げていくと
Number型:値が0ならばfalse、NaN(Not a Number)でもfalse
String型:長さ0の文字列「""」ならばfalse、それ以外はtrue
Undefined型, Null型は常にfalse
となっている。
JavaScript If文の復習と、三項演算子 - Wikibooks
条件がString(空文字)の場合
var x = "" var y = (x) ? true : false ; alert(y); // false
条件がString(空文字以外)野場合
var x = "a" var y = (x) ? true : false ; alert(y); // true
条件がInteger(0)の場合
var x = 0; var y = (x) ? true : false ; alert(y); // false
条件がInteger(非0)の場合
var x = 1; var y = (x) ? true : false ; alert(y); // true
条件がNAN(Not a Number)の場合
var x = parseInt('a'); var y = (x) ? true : false ; alert(y); // false
条件がundefinedの場合
var x; var y = (x) ? true : false ; alert(y); // false
条件がnullの場合
var x = null; var y = (x) ? true : false ; alert(y); // false