我对 JavaScript 中的一些概念有疑问,例如(truthy, true)
和(falsy, false)
。
我知道 1 的类型不是true
,但问题是:为什么1 == true
?
ECMAScript 将 1 或“ghsagh”视为 的主要原因是true
什么?
我也无法理解truthy
and的含义falsy
。
这种考虑有什么好处?!
我对 JavaScript 中的一些概念有疑问,例如(truthy, true)
和(falsy, false)
。
我知道 1 的类型不是true
,但问题是:为什么1 == true
?
ECMAScript 将 1 或“ghsagh”视为 的主要原因是true
什么?
我也无法理解truthy
and的含义falsy
。
这种考虑有什么好处?!
JavaScript 喜欢尽可能隐式地将值转换为其他类型。因此,在将布尔值与其他类型的变量进行比较时,JavaScript 使用与旧编程语言相同的逻辑。表示空、null 或零(例如 0 或“”)的值评估为 false,而任何其他值(例如 1、5、-19、“ghsfsah”或其他有意义的内容)评估为 true。
为什么这样做?对于一个人来说,它允许开发人员在检查变量是否有内容时使用一个小快捷方式。例如,如果用户没有在文本字段中输入,我们可以轻松检查字段是否为空并提示用户。
if ( !textfield.value ) {
alert( "Please enter something in the text box" );
}
如果您需要查看某事实际上是true
或false
,您可以使用===
.
JavaScript 对所需的值类型非常灵活。如果 JavaScript 想要一个布尔值,它会将你给它的任何值转换为布尔值。
一些值(“真”值)转换为真,而其他(“假”值)转换为假。
以下值转换为 false,因此工作方式类似于 false:
所有其他值,包括所有对象(和数组)都转换为 true 并像这样工作。
例如,假设变量o
包含一个对象或值null
。您可以使用如下 if 语句显式测试 o 是否为非空:
if (o !== null){
....
}
严格不等于运算符!==
比较o
并null
评估为真或假。但是你可以省略比较,而是依赖于null
虚假和对象是真实的事实:
if (o){
....
}
在第一种情况下, if 的主体将仅在o
is not时执行null
。因此,即使 o 设置为 ,代码块也会执行undefined
。
第二种情况不太严格:它将执行 if only if o
is notfalse
或任何假值(例如null
or undefined
)的主体。哪个 if 语句适合您的程序实际上取决于您期望分配给的值o
。如果你需要区分null
和0
“”,那么你应该使用显式比较。