这是最近开始发生的奇怪事情。
function someFunction() {
return 0;
}
if (someFunction() == 0)
runCode();
elseif (someFunction() == '0')
runOtherCode();
在这种情况下,不会调用runCode(),而是调用runOtherCode()。出现这种情况的原因是什么?
编辑:在某些情况下使用===修复此错误。但是,此问题的另一个时间是从数据库返回整数结果时。由于某种原因,转换为字符串但在返回数据之前向数据添加(int)的整数修复了该错误。
答案 0 :(得分:1)
您需要使用严格比较来防止类型强制。基本上是这样的:
if(someFunction() === 0)
elseif(someFunction() === '0')
3个等号而不是2个调用严格的比较,是区分字符串和整数比较的唯一方法。
编辑: 这在其他情况下也很重要,所以要经常考虑它。