2016-10-14 4 views
6

は、以下行いますこれはどういう意味ですか?:x || X === {}

x || x === {} 

!!xを意味しない、つまり、xが定義されていますか?比較はxがtruthyで、その後、あなたがx、またはfalsyの結果を得るのいずれかのために、あなたは(falsy値は空のオブジェクトインスタンスと等しい厳格なことはありません)falseを取得し、意味をなさないこと

+0

場合に同じである....のhttp://stackoverflow.com/questions/3563153/what-does-var-xx – BobSki

+1

'truthyある} {'ので、私はドン上記のコードのポイントを参照してください... –

+0

それはダップではありませんe、比較のために。 –

答えて

7

簡潔なバージョンは私xまたはfalseを与えるため

x || false 

だろう。

+0

xは{}との参照として比較されるため、右側にfalseが表示されます。 @ Tomasz Lewowskiはそれもあまりにも下に指定しました。 –

+2

@RazvanDumitruこれは、彼女が 'false'を書いた理由です。 –

+2

もちろん、初心者にとっては最終結果に直接行くのが曖昧です。 –

2

||は、LHSが真の値であれば左手側を返します。したがって、xが真の値の場合は、xを返します。

それ以外の場合は、xと新しいオブジェクト(常にfalse)を比較し、それを返します。

したがって、xが真の場合は、xが得られます。そうでない場合は、明示的なブール値falseが得られます。

!!xとは異なります。xが真の値だった場合は、ブール値trueを返します。

5

x || x === {}は、基本的には、x || falseを意味します。

!!xは "truthy xである" を意味し、それはまったく同じではありません - xがtruthyある場合x || x === {}xを返します。 同じ場合、!!xtrueを返します。 「左サイドがtruthyであれば(ないundefined、ない0など、ないnull - 詳細についてはAll falsey values in JavaScriptを参照)右サイドを返す左側を返し、それ以外の」

||オペレータが意味しています。厳密な比較は(すなわち、「真なることはありませんこれは、x{}と同じオブジェクトである)

!!xx || x === {}を参照ワイズます比較意味するので、常に、falseに評価され、あなたがx === {}を持って右側で

これはビットを助けるかもしれないだけx === true又はx === false

関連する問題