字符串和数字之间的Javascript比较

时间:2012-05-15 22:32:25

标签: javascript

您好我刚刚浏览了一些基本的javascript,我遇到了这段代码

if('3'!=3)
{
   document.write("Hello");
}

这会将问题写入屏幕,但是当我将其更改为:

if('3'==3)
{
   document.write("Hello");
}

这也将Hello写入屏幕

有谁知道这个的原因吗?我读到javascript将字符串转换为比较中的数字我只是不明白我改变条件时的不同行为

谢谢!

3 个答案:

答案 0 :(得分:3)

这是因为==运算符在比较之前尝试将两个操作数转换为相同的类型。换句话说,它看到字符串'3'与数字3相同,并表示它们是相等的。使用===运算符来避免这种情况,因为它不会尝试转换操作数(它执行严格等式检查)。

不会写“Hello”:

if('3'===3)
{
   document.write("Hello");
}

这是另一个有趣的例子:

if(false == 0) {
    document.write("Hello");
}

它会写你好!这是因为0被视为可以转换为false的值。和以前一样,使用===运算符可以解决这个问题:

if(false === 0) {
    document.write("Hello"); // won't write hello
}

答案 1 :(得分:2)

这是因为==并不关心类型。

使用===代替。

答案 2 :(得分:2)

如果您想进行严格比较,请使用===运算符或!==