ショートサーキット、短絡評価って名前をいまさら知った。
論理式のAND((&&
で論理積))とOR((||
で論理和))で、左辺で確定する場合に、右辺を評価しない事を、ショートサーキット(短絡評価)っていうらしい。そういえば、以前そんな単語を聞いた事があるような気もします。内容自体はたいした事じゃないんだけど、名前を知ってるとより強く意識できるので、書いておきます。割と常識扱いされてるけど、それゆえに入門書とか解説に登場しないものかも。
言語によらない事だと思いますが、例はjavascriptです。
ANDの場合
var foo = false; foo && bar;
fooがfalse
の時点で、false
が確定するので、barは評価されない。なのでvar bar
してなくてもbar is not defined
って怒られない。
ORの場合
var foo = true; foo || bar;
fooがtrue
の時点で、true
が確定するので、barは評価されない。以下、同上。
ちょっと余談
var foo = (1 && 0);
ショートサーキットの例を書いてて気がついたけど、JavaScriptって、これでfooはfalse
にならないんだね。0
が入ってた。左辺の1
がtrue
なので、右辺の0
が評価されて、それが代入されたってことなのかな?PHPだと、これでfalse
が代入されるから便利だったんですけど。PHPが特殊なのかJavaScriptが特殊なのか、どっちだろう?