Câu trả lời ngắn:
Không , chúng không giống nhau.
Nhưng điều này:
if (!fields) {
...
}
Giống như thế này:
if ((fields === null) || (fields === undefined) || (fields === 0) || (fields === '') || (fields === NaN) || (fields === flase)) {
...
}
Dài (và tốt hơn) Trả lời:
Trước tiên hãy nói về những giá trị trung thực và giả dối.
Đó là tất cả về những gì xảy ra khi bạn đánh giá một cái gì đó là một boolean. Trong JavaScript, điều này xảy ra khi bạn sử dụng những thứ như if
câu lệnh; khai thác hợp lý thích ||
, !
hoặc &&
; hoặc Boolean()
chức năng.
Các Boolean()
chức năng chấp nhận một giá trị và lợi nhuận hoặc true
hoặc false
.
Ví dụ:
var age = 1; // Let's evaluate age as a boolean
Boolean(age); // true
Đi trước và thử điều này trong một nút thay thế.
Boolean chỉ có thể là true
hoặc false
, vì vậy giá trị trả về Boolean()
phải là true
hoặc false
. Trong trường hợp này, chúng tôi đã chuyển vào giá trị 1
và khi được đánh giá là boolean, 1
là true
.
Quan trọng: Khi được đánh giá là boolean, giá trị phải là đúng hoặc sai. Đó là hai lựa chọn duy nhất.
Trong JavaScript, chỉ có 6 giá trị giả. Các giá trị sẽ được false
khi được đánh giá là một boolean. Đó là: false
, 0
, ""
, null
, undefined
, và NaN
. Vì vậy, nếu bất kỳ giá trị nào trong số này được đánh giá là boolean, chúng sẽ sai:
Boolean(false) // false
Boolean(0) // false
Boolean("") // false
Boolean(null) // false
Boolean(undefined) // false
Boolean(NaN) // false
Điều này có nghĩa là bất kỳ giá trị nào khác, trong JavaScript, sẽ được true
đánh giá là boolean. Vì vậy, mọi giá trị khác trong JavaScript là trung thực.
Một cách dễ dàng khác để đánh giá một cái gì đó boolean
là bằng cách sử dụng !
toán tử. Cũng giống như Boolean
hàm, cái này đánh giá một giá trị là boolean. Nhưng giá trị trung thực trở thành false
và giá trị giả trở thành true
.
!false // true
!0 // true
!"" / true
!null // true
!undefined // true
!NaN // true
Một lần nữa, hãy thử điều này trong một nút thay thế hoặc một cái gì đó để đảm bảo bạn hiểu.
Vì vậy, tuyên bố này:
if (!fields) {
...
}
Đang nói như sau: "if fields
, khi được đánh giá là boolean, là false, thì hãy chạy mã bên trong câu lệnh if này."
Đối với tuyên bố đầu tiên của bạn:
var fields = options.fields || ['id', 'query'];
Bạn đang làm việc với toán tử OR logic, đáng để đọc để đảm bảo rằng bạn hiểu. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators