JavaScriptでのちょっと気になったfor inなどの書き方メモ

ちょっと気になったfor inの書き方

あるJavaScriptのライブラリのコードを見ていたところ、見慣れない書き方があったのでメモ。

var cityInfo = {
    shinjuku: "tokyo",
    shibuya: "tokyo",
    yokohama: "kanagawa",
    kyoto: "kyoto"
};
for ( city in cityInfo ) if ( cityInfo[city] === "tokyo" ) {
    console.log(city);
}

// shinjuku
// shibuya

このようにfor ( key in obj ) if { } と書くことでifのブロックがforのブロックであるように見えるのが面白いですね。forブロックの中にifブロックを入れないことでインデントが一段浅くなるのはいいなぁと思いました。混乱しそうな書き方ではありますしelseとか付けだすと破綻しますが。。

オブジェクトのプロパティの存在をinでチェックする

if ( "yokohama" in cityInfo ) {
    console.log("yokohama is exist");
}

// yokohama is exist

if文の条件としてkey in objのような書き方が出来ることも知りませんでした。obj[key]がundefinedかどうかでチェックすることも出来ますがこちらの方が記述はシンプルですね。


githubで色んなプロジェクトのソース見ると色々発見があって面白いですね。