2011-10-29 6 views
2

if文を&&文で置き換えることは時々意味がありますか?これによって私はif文の構文が異なります

a && b(); 

によって

if(a) { 
    b(); 
} 

を置き換える意味これらのフォームと同等か?いくつかの状況では、より軽いスタイルが推奨されていますか?

+0

可能なdup:http://stackoverflow.com/questions/6970346/what-is-x-foo – bbg

+0

他の人の言われたことをさらに加えるだけで、それらは等しく動作しますが、1)jslintなどツールは2番目に不平を言うかもしれません。 2)2番目の値は値を返します。キャプチャしていません。 – thomasrutter

+0

@thomasrutter Dougがあなたの気持ちを傷つけるjslintと言ったように – david

答えて

2

どちらのフォームも多かれ少なかれ同等です。ただし、微妙な違いが1つあります。

If文は単なる文です。彼らは値を返したり、表現したりしません。

論理AND演算子は式を形成します。またはの値を返します。

一般に、文の代わりに式を使用することはお勧めできません。予期しない結果につながる可能性があります。たとえば、ブックマークレットで式を無効にしないと使用すると、ドキュメントは式で置き換えられます。常にそれぞれ式2つの異なった式のいずれかを発現し、ガードデフォルトとして、論理ANDおよびOR演算子を使用する条件演算子を使用し、分岐コードのif文を使用する一般的なルールとして

ステートメントと式の概念は、すべての言語にとって基本的なものです。自然言語でさえ(文章やフレーズと比較して)。私たちは理由のためにそれらの両方を使用します。一般的にそれらを混ぜるのは良い考えではありません。また、他のプログラマのためのドキュメントの一種として機能し、読みやすくデバッグしやすくなっています。

この投稿は忘れられない耳には当てられません。 =)

5

はい、同等です。もちろん、ifははるかに読みやすくなっています。

&&は、効率的な評価のために論理AND演算子です。文の左辺部分が偽値を返した場合、2番目の部分は評価されず、式全体がfalseを返します。

ステートメントの左辺部分に真理値がある場合は、結果を決定するために2番目の部分が評価されます。

a && b();では、この演算子の副作用(ショートカットメカニズム)を使用していますが、論理AND演算の結果を使用していません。それが動作している間、私はそれをお勧めしません。

関連する問題