JavaScript中的真与假有什么区别?

时间:2015-02-11 14:24:29

标签: javascript

我对JavaScript中的一些概念有疑问,例如(Truthy,True),(Falsy,false)。

我知道1的类型不正确,但问题是为什么1 == true? ECMAScript考虑1或" ghsagh"的主要原因是什么?是真的吗?

我无法理解" Truthy,Flasy"太。 这种考虑有什么好处?!

2 个答案:

答案 0 :(得分:3)

JavaScript喜欢尽可能隐式地将值转换为其他类型。因此,在将布尔值与其他类型的变量进行比较时,JavaScript使用与旧编程语言相同的逻辑。表示空,空或零(例如0或“”)的值的计算结果为false,任何其他值(例如1,5,-19,“ghsfsah”或其他有意义的内容)的计算结果为true。

为什么这样做?好吧,在检查变量是否有内容时,它允许开发人员使用一个小的快捷方式。例如,如果用户未在文本字段中提供输入,我们可以轻松检查字段是否为空并提示用户。

if ( !textfield.value ) {
    alert( "Please enter something in the text box" );
}

如果您需要查看 实际上是true还是false,您可以使用===

答案 1 :(得分:0)

JavaScript对于所需的值类型非常灵活。如果JavaScript需要布尔值,它将把您给它的任何值转换为布尔值。

某些值(“真实”值)转换为true,其他值(“虚假”值)转换为false。

以下值转换为false,因此工作方式类似:

  1. 未定义
  2. 0
  3. -0
  4. NaN
  5. “” //空字符串

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

作为示例,假设变量o包含一个对象或值null。您可以使用如下if语句来明确测试o是否为非空值:

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

严格不等于运算符!==onull进行比较,得出真或假。但是您可以省略比较,而可以依靠null是虚假的且对象是真实的这一事实:

if (o){
....
}

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

第二种情况不太严格:仅当o不是false或任何伪造的值(例如nullundefined时,它将执行if的主体)。哪种if语句适合您的程序,实际上取决于您希望分配给o的值。如果您需要将null0和“”进行区分,则应该使用显式比较。

相关问题