javascript true和false

时间:2014-09-01 13:45:10

标签: javascript if-statement operators boolean-logic

我已经知道以下行为,但是有人可以告诉我为什么会这样吗?感谢。

if("hello"==true)alert("it's true!"); //-> does not fire the alert
if("hello"==false)alert("it's true!"); //-> does not fire the alert
if("hello")alert("it's true!"); //-> fires the alert

3 个答案:

答案 0 :(得分:4)

在前两个中,您明确地将字符串与布尔常量进行比较,并且字符串显然不等于任何一个。在第三行,您正在测试"真实性"字符串,并且任何非空字符串在该上下文中计算为true

在字符串和布尔值之间进行比较时,Abstract Equality Comparison Algorithm表示比较应该作为数字比较来执行。因此true转换为1,false转换为0; "hello"将为NaN。 <{1}}永远不会NaN

答案 1 :(得分:1)

truefalse是布尔值,您试图将布尔值与字符串值进行比较,因此您将面临问题,因为条件不满意。

在第三种情况下,你不是在比较你只是检查true

答案 2 :(得分:1)

您不能将字符串(&#34; HELLO&#34;)与布尔值(true)进行比较。它们有两种不同的类型。最后一个警报触发因为您没有将它与任何内容进行比较。只有在您测试空字符串

时才会返回
var foo = "Hello world!"; 
if(foo){ 
  //if foo is not empty 
}else{ 
  //if foo is empty
}