簡潔な答え:
いいえ、同じではありません。
しかしこれは:
if (!fields) {
...
}
これと同じです:
if ((fields === null) || (fields === undefined) || (fields === 0) || (fields === '') || (fields === NaN) || (fields === flase)) {
...
}
長い(そしてより良い)答え:
まず、真実と偽りの価値について話しましょう。
何かをブール値として評価したときに何が起こるかがすべてです。JavaScriptでは、これはif
ステートメントなどを使用すると発生します。論理演算子は好き||
、!
または&&
; またはBoolean()
関数。
Boolean()
関数は、いずれかの値とリターンを受け入れますtrue
か、false
。
例えば:
var age = 1; // Let's evaluate age as a boolean
Boolean(age); // true
先に進んで、これをノード複製で試してください。
ブール値は、唯一可能true
かfalse
の戻り値はので、Boolean()
しなければならないのいずれかですtrue
かfalse
。この場合、値を渡し1
、ブール値として評価すると1
is true
です。
重要:ブール値として評価される場合、値はtrueまたはfalseでなければなりません。これらは2つのオプションのみです。
JavaScriptでは、偽の値は6つしかありません。false
ブール値として評価される場合の値。:彼らはfalse
、0
、""
、null
、undefined
、とNaN
。したがって、これらの値のいずれかがブール値として評価されると、それらはfalseになります。
Boolean(false) // false
Boolean(0) // false
Boolean("") // false
Boolean(null) // false
Boolean(undefined) // false
Boolean(NaN) // false
つまり、JavaScriptの他の値はtrue
、ブール値として評価されます。したがって、JavaScriptの他のすべての値は真実です。
として何かを評価する別の簡単な方法boolean
は、!
演算子を使用することです。Boolean
関数と同様に、これは値をブール値として評価します。しかし、真実の値はになりfalse
、偽の値はになりtrue
ます。
!false // true
!0 // true
!"" / true
!null // true
!undefined // true
!NaN // true
繰り返しますが、ノードのreplなどで試して、理解していることを確認してください。
したがって、このステートメント:
if (!fields) {
...
}
次のように言っています:「fields
ブール値として評価された場合、falseの場合、このifステートメント内でコードを実行します。」
最初のステートメントについて:
var fields = options.fields || ['id', 'query'];
論理OR演算子を使用しているので、理解するために一読する価値があります。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators