2013-01-15 85 views
0

在普通的javascript函数中。值min_chk和max_chk都是true,但if函数仍显示警报。无法找到原因?javascript true和true在if语句中返回false?

function Checkit(m,n){ 
return m>n; 
} 

var min_chk = Checkit(a,X); 
var max_chk = Checkit(b,Y); 
if ((min_chk === 'true') && (max_chk === 'true')){ 
... 
    } else { 
    alert('invalid range'); 
} 

回答

3

===运算符返回false如果两边的操作数有不同的类型。布尔型true和字符串"true"有不同的类型。

你应该改变你的支票只是

if (min_chk && max_chk) 

由于min_chkmax_chk已经布尔,你并不需要将它们直接与true比较。

3

布尔true是不一样的字符串'true'。删除引号。

+0

甚至更​​好,完全摆脱'=== true'。这不是必需的。 –

+0

这是真的。由于'CheckIt'的返回值是已知的,因此不需要严格的比较。 –

+0

谢谢Peter,thx Kolink。 – rajeev

1

摆脱'真正左右

function Checkit(m, n) { 
    return m > n; 
} 

var min_chk = Checkit(a, X); 
var max_chk = Checkit(b, Y); 
if ((min_chk === true) && (max_chk === true)) {... 
} else { 
    alert('invalid range'); 
}