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 ifinstrukcje; operatory logiczne podoba ||, !lub &&; lub Boolean()funkcja.
Boolean()Funkcja przyjmuje wartość i powraca albo trueczy 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 truelub false, więc zwracana wartość Boolean() musi wynosić albo truealbo false. W tym przypadku przekazaliśmy wartość 1, a gdy jest oceniana jako wartość logiczna, 1jest 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ą falseocenione 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 trueza wartość logiczną. Tak więc każda inna wartość w JavaScript jest prawdziwa.
Innym łatwym sposobem oceny czegoś jako booleanjest użycie !operatora. Podobnie jak Booleanfunkcja, wartość ta przyjmuje wartość logiczną. Ale prawdziwe stają się wartości, falsea 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 fieldszostanie 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