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 的主要原因是什么?

我也看不懂truthyfalsy的意思。

这种考虑有什么好处?!

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:

  1. 未定义
  2. 0
  3. -0
  4. "" // 空字符串

所有其他值,包括所有对象(和数组)都转换为 true 并像 true 一样工作。

例如,假设变量 o 包含一个对象或值 null。您可以使用如下 if 语句显式测试以查看 o 是否 non-null:

if (o !== null){
....
}

严格的 not-equal 运算符 !==onull 进行比较并计算结果为真或假。但是你可以省略比较,而是依赖于 null 是假的,而对象是真实的:

if (o){
....
}

在第一种情况下,只有当o不是null时才会执行if的主体。因此,即使 o 设置为 undefined,代码块也会执行。

第二种情况不太严格:仅当 o 不是 false 或任何虚假值(例如 nullundefined).哪个 if 语句适合您的程序实际上取决于您希望分配给 o 的值。如果你需要区分null0和"",那么你应该使用显式比较。