匿名質問者

js プラグインを読んでいると次のような一文が出てきました。

A: function () {
this.config.logger && this.config.logger("hoge: destroy");
...
}

この論理演算子を使った部分の意味が全く分からないのですが、分かる方いらっしゃいましたらご教示下さい!

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2014/05/12 18:34:24

ベストアンサー

匿名回答1号 No.1

「A && B」はAまたはBのどちらかがfalseだともう一方がどうであれfalseになる。
つまりAを評価してfalseになった場合、Bを評価せずともfalseであることが確定する。
そのため、言語仕様としてAがfalseならBを評価しないという言語も多い。
そしてそういう仕様であれば「もしAがtrueならBを実行する」というif文として使える。
これを短絡評価というらしい。
http://ja.wikipedia.org/wiki/%E7%9F%AD%E7%B5%A1%E8%A9%95%E4%BE%A1

質問の場合に当てはめると、"this.config.logger"がfalseならそれ以降の、関数呼び出しを行わない。
下記にあるが、falseとなるのは「null、0、空文字列("")、あるいは、undefined」で、関数オブジェクトならtrueになる。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Logical_Operators

つまり、this.config.loggerが定義されていれば呼び出しをする。定義されてなければ呼び出さない。
たぶん、オプションでログのオン・オフがあって、オンなら関数代入、オフなら未設定(nullかundefined)にしてるのでは(関数の有り無しがログのオン・オフフラグを兼ねている)。

匿名質問者

なるほど~!!!
ご説明丁寧で非常にわかりやすかったです。

&&がこんな使い方できたとは...

2014/05/12 18:35:39

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません