簡潔な答え:
いいえ、同じではありません。
しかしこれは:
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、ブール値として評価すると1is 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