Коротка відповідь:
Ні , вони не однакові.
Але це:
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є true.
Важливо: Якщо оцінюється як булева, значення має бути істинним, або хибним. Це єдині два варіанти.
У JavaScript є лише 6 фальшивих значень. Значення, які будуть falseоцінені як булеві. Вони є: false, 0, "", null, undefined, і NaN. Отже, якщо будь-яке з цих значень оцінюється як булеве, воно буде помилковим:
Boolean(false) // false
Boolean(0) // false
Boolean("") // false
Boolean(null) // false
Boolean(undefined) // false
Boolean(NaN) // false
Це означає, що будь-яке інше значення в JavaScript буде trueоцінено як булеве. Отже, будь-яке інше значення в JavaScript є правдоподібним.
Ще один простий спосіб оцінити щось як a boolean- це за допомогою !оператора. Так само, як і Booleanфункція, це оцінює значення як булеве. Але ціннісні цінності стають falseі хибними значеннями стають true.
!false // true
!0 // true
!"" / true
!null // true
!undefined // true
!NaN // true
Знову ж таки, спробуйте це у відтворенні вузла чи щось, щоб переконатися, що ви розумієте.
Отже, це твердження:
if (!fields) {
...
}
Каже наступне: "якщо fields, коли оцінюється як булева, помилкова, тоді запустіть код всередині цього оператора if".
Що стосується вашого першого твердження:
var fields = options.fields || ['id', 'query'];
Ви працюєте з логічним оператором АБО, про який варто прочитати, щоб переконатися, що ви розумієте. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators