-3

嗨,我只是在浏览一些基本的 javascript,然后遇到了这段代码

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

这会向屏幕打招呼,但是当我将其更改为:

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

这也将 Hello 写入屏幕

有谁知道这是什么原因?我读到javascript在比较中将字符串转换为数字我只是不理解更改条件时的不同行为

谢谢 !!

4

3 回答 3

3

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

不会写“你好”:

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

这是另一个有趣的例子:

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

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

if(false === 0) {
    document.write("Hello"); // won't write hello
}
于 2012-05-15T22:33:40.657 回答
2

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

使用 === 代替。

于 2012-05-15T22:33:57.163 回答
2

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

于 2012-05-15T22:34:06.317 回答