2017-04-04 10 views
0

私は約9ヶ月前に新会社を立ち上げ、JSでこれを続けていきます。それはうまく動作しています。以前の開発者のコ​​ード作成方法と同じように使用していますが、それが何であるかは正確には分かりません。私はそれを検索しようとしましたが、正確に何を検索するのかはわかりません。それは三条件の一種だが、私はあまりわからないようJavascript - 誰かが私にこれが何をしているのか正確に説明できますか?

!options && (options = {})

は私にとって、それは感じています。

本のよりよい例は次のようになります

function init(options) { 
    !options && (options = {}); 
} 

init(); 
+0

'場合は(存在)何も起こりません。 false(存在しない)の場合、 'options'は空のオブジェクトとして作成されます。 – Li357

+0

オプションオブジェクトが存在しない場合はオプションオブジェクトを作成して割り当てます。 –

+3

'options = options ||と同じです。 {}; ' – gurvinder372

答えて

4

コードと等価である:

if(!options) 
    options = {}; 

これはオペレータ短絡の例である:第二の発現(options = {}は)のみ意志最初の式が偽である場合、&&文全体が自動的に偽になるため、最初の式(!options)が真である場合に評価されます。

"と"(&&)と "または"(||)演算子を使用する場合に特に発生します。

MDNはthis pageこれをより詳細に記述されています。

+1

これは素晴らしいです、この男に答えることに感謝します!私はそれが条件文であることと同じくらい簡単だと思ったが、 '&&'私は完全にオフ:-) – ChronixPsyc

3

値がそれのために指定されていない場合は{}としてoptionsを初期化する方法です。

最初のチェック!optionsは、 "options is falsy"を意味します。

のでoptionsnullundefinedなどであれば、それは&&声明を通じて継続し、それを初期化、options = {}を設定します。

それは非常に明確である、このように書くことができます。options`がtruthyある

if (!options) { 
    options = {}; 
} 
関連する問題