Krótka odpowiedź:
Nie , nie są tacy sami.
Ale to:
if (!fields) {
...
}
Jest taki sam jak ten:
if ((fields === null) || (fields === undefined) || (fields === 0) || (fields === '') || (fields === NaN) || (fields === flase)) {
...
}
Długa (i lepsza) odpowiedź:
Porozmawiajmy najpierw o wartościach prawdy i fałszu.
Chodzi o to, co się dzieje, gdy oceniasz coś jako wartość logiczną. W JavaScript dzieje się tak, gdy używasz rzeczy takich jak if
instrukcje; operatory logiczne podoba ||
, !
lub &&
; lub Boolean()
funkcja.
Boolean()
Funkcja przyjmuje wartość i powraca albo true
czy false
.
Na przykład:
var age = 1; // Let's evaluate age as a boolean
Boolean(age); // true
Śmiało i wypróbuj to w replice węzła.
Wartość logiczna może być tylko true
lub false
, więc zwracana wartość Boolean()
musi wynosić albo true
albo false
. W tym przypadku przekazaliśmy wartość 1
, a gdy jest oceniana jako wartość logiczna, 1
jest true
.
Ważne: Przy ocenie jako wartość logiczna wartość musi być prawdą lub fałszem. To jedyne dwie opcje.
W JavaScript jest tylko 6 wartości fałszowania. Wartości, które zostaną false
ocenione jako wartość logiczna. Są to: false
, 0
, ""
, null
, undefined
, i NaN
. Więc jeśli którakolwiek z tych wartości zostanie oszacowana jako wartość logiczna, będą one fałszywe:
Boolean(false) // false
Boolean(0) // false
Boolean("") // false
Boolean(null) // false
Boolean(undefined) // false
Boolean(NaN) // false
Oznacza to, że każda inna wartość w JavaScript zostanie uznana true
za wartość logiczną. Tak więc każda inna wartość w JavaScript jest prawdziwa.
Innym łatwym sposobem oceny czegoś jako boolean
jest użycie !
operatora. Podobnie jak Boolean
funkcja, wartość ta przyjmuje wartość logiczną. Ale prawdziwe stają się wartości, false
a stają się wartości fałszywe true
.
!false // true
!0 // true
!"" / true
!null // true
!undefined // true
!NaN // true
Ponownie, wypróbuj to w replice węzła lub coś, aby upewnić się, że rozumiesz.
Więc to stwierdzenie:
if (!fields) {
...
}
Mówi, co następuje: „jeśli jeśli fields
zostanie ocenione jako wartość logiczna, jest fałszywe, uruchom kod w tej instrukcji if”.
Co do twojego pierwszego oświadczenia:
var fields = options.fields || ['id', 'query'];
Pracujesz z logicznym operatorem OR, który warto przeczytać, aby upewnić się, że rozumiesz. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators