简短答案:
不,它们不一样。
但是这个:
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
继续尝试在节点repl中进行此操作。
布尔值只能是true
或false
,因此返回值Boolean()
必须是true
或false
。在这种情况下,我们传入了value 1
,并且在将其评估为布尔值时1
为true
。
重要提示:以布尔值形式评估时,值必须为true或false。这些是仅有的两个选择。
在JavaScript中,只有6个伪造的值。值,这将是false
当作为一个布尔评价。它们是:false
,0
,""
,null
,undefined
,和NaN
。因此,如果这些值中的任何一个被评估为布尔值,它们将为false:
Boolean(false) // false
Boolean(0) // false
Boolean("") // false
Boolean(null) // false
Boolean(undefined) // false
Boolean(NaN) // false
这意味着在JavaScript中,其他任何值都将被true
评估为布尔值。因此,JavaScript中的所有其他值都是真实的。
另一种评估事物的简单方法boolean
是使用!
运算符。就像Boolean
函数一样,这会将值评估为布尔值。但是真实的价值观变成了false
虚假的价值观true
。
!false // true
!0 // true
!"" / true
!null // true
!undefined // true
!NaN // true
再一次,在节点代表或其他方面尝试一下,以确保您理解。
所以这条语句:
if (!fields) {
...
}
在说以下内容:“如果fields
将boolean值评估为false,则运行if语句中的代码。”
至于你的第一句话:
var fields = options.fields || ['id', 'query'];
您正在使用逻辑OR运算符,值得一读以确保您理解。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Logical_Operators