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