2011年08月10日

JavaScriptでnullチェックするときにひょっとしたら少しすっきりするテクニック

本日はJavaScriptの小ネタです。

適当なオブジェクトobjがあって、objがgetValueという関数を持ってるとします。
objもgetValueの戻り値もnullではない場合に何かの処理を行いたいとします。
コードは以下のような感じです。

こんなときどうする?
if (obj && obj.getValue()) {
var value = obj.getValue();
//以降、valueを使って何か処理を行う。
}


このコードの問題点はgetValueを2回呼んでいること。
2回も呼びたくないのでこんな風に書き直してみましたが・・・。

これでいいのか?
if (obj) {
var value = obj.getValue();
if (value) {
//以降、valueを使って何か処理を行う。
}
}


if文が入れ子になりました。
getValueの呼び出しは1回ですが、いまいちすっきりしません。
そこで、以下のように書けます。

これですっきり
var value;
if (obj && (value = obj.getValue())) {
//以降、valueを使って何か処理を行う。
}


ポイントはもちろん、if文の条件の中で変数に代入することです。
また、演算子の優先順位(この場合は&&と=)から、適切に括弧でくくる必要があるかも。
C#やJavaのようなお堅い言語に比べれば少々トリッキーな感じもしますが、
JavaScriptの緩さゆえの良いところってことで。





ラベル:javascript
posted by ぺるたご at 16:46| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。