Kısa cevap:
Hayır , aynı değiller.
Ama bu:
if (!fields) {
...
}
Şununla aynı:
if ((fields === null) || (fields === undefined) || (fields === 0) || (fields === '') || (fields === NaN) || (fields === flase)) {
...
}
Uzun (ve daha iyisi) Cevap:
Önce doğruluk ve tahrif değerleri hakkında konuşalım.
Her şey bir şeyi bir boole olarak değerlendirdiğinizde olanlarla ilgilidir. JavaScript'te bu, ififadeler gibi şeyler kullandığınızda olur ; Mantıksal operatörler gibi ||, !ya da &&; veya Boolean()işlev.
Boolean()Fonksiyon ve bir değer iade kabul eden trueya da false.
Örneğin:
var age = 1; // Let's evaluate age as a boolean
Boolean(age); // true
Devam edin ve bunu bir düğüm yanıtında deneyin.
Boolean sadece olabilir trueya da falsedönüş değeri, yani Boolean() gereken olarak mevcut trueya da false. Bu durumda, değer geçmiş 1ve bir mantıksal olarak değerlendirildiğinde, 1bir true.
Önemli: Bir boole olarak değerlendirildiğinde, bir değer doğru veya yanlış olmalıdır. Bunlar sadece iki seçenek.
JavaScript'te yalnızca 6 yanlış değer vardır. falseBir boolean olarak değerlendirildiğinde değerlendirilecek değerler . Bunlar: false, 0, "", null, undefined, ve NaN. Dolayısıyla, bu değerlerden herhangi biri bir boole olarak değerlendirilirse, yanlış olurlar:
Boolean(false) // false
Boolean(0) // false
Boolean("") // false
Boolean(null) // false
Boolean(undefined) // false
Boolean(NaN) // false
Bu, JavaScript'teki diğer tüm değerlerin trueboole olarak değerlendirileceği anlamına gelir . JavaScript'teki diğer tüm değerler doğrudur.
Bir şeyi olduğu gibi değerlendirmenin bir başka kolay yolu booleanda !operatörü kullanmaktır . Tıpkı Booleanişlev gibi , bu da bir değeri boole olarak değerlendirir. Fakat gerçek değerler olur falseve yanlış değerler olur true.
!false // true
!0 // true
!"" / true
!null // true
!undefined // true
!NaN // true
Yine, bunu anladığınızdan emin olmak için bir düğüm yanıtında veya başka bir şeyde deneyin.
Yani bu açıklama:
if (!fields) {
...
}
Şunu söylüyor: "eğer fieldsbir boole olarak değerlendirildiğinde yanlışsa, bu if ifadesinin içindeki kodu çalıştırın."
İlk ifadenize gelince:
var fields = options.fields || ['id', 'query'];
Anladığınızdan emin olmak için okumaya değer mantıksal OR operatörü ile çalışıyorsunuz. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators