嗨,我只是在浏览一些基本的 javascript,然后遇到了这段代码
if('3'!=3)
{
document.write("Hello");
}
这会向屏幕打招呼,但是当我将其更改为:
if('3'==3)
{
document.write("Hello");
}
这也将 Hello 写入屏幕
有谁知道这是什么原因?我读到javascript在比较中将字符串转换为数字我只是不理解更改条件时的不同行为
谢谢 !!
嗨,我只是在浏览一些基本的 javascript,然后遇到了这段代码
if('3'!=3)
{
document.write("Hello");
}
这会向屏幕打招呼,但是当我将其更改为:
if('3'==3)
{
document.write("Hello");
}
这也将 Hello 写入屏幕
有谁知道这是什么原因?我读到javascript在比较中将字符串转换为数字我只是不理解更改条件时的不同行为
谢谢 !!
发生这种情况是因为==
运算符在比较之前尝试将两个操作数转换为相同的类型。换句话说,它看到 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
}
这是因为 == 不关心类型。
使用 === 代替。
如果要进行严格比较,请使用===
运算符或!==