在PHP(5.3.14)中,以下代码返回true
:
-1 > null
JavaScript中完全相同的代码返回false
。这背后的原因是什么?
答案 0 :(得分:40)
当一方存在空值时,PHP会将双方转换为布尔值。
关于Comparison Operators的PHP手册部分指出,操作数1的类型是" bool或null",反之亦然,它"将双方转换为bool,{{ 1}}"
任何具有非零值的数字都是considered to be truthy,但这可能不直观。
在JavaScript中,比较的定义不同,因此会在数字上对它们进行比较(FALSE < TRUE
- > 0)。
ECMA-262声明:
3。如果不是Type(px)都是String而Type(py)是String,那么
一个。设nx是调用ToNumber(px)的结果。因为px和py是原始值,所以评估顺序并不重要 湾让ny成为调用ToNumber(py)的结果。
众所周知,PHP具有相当不一致的类型强制系统 - PHP: a fractal of bad design突出了PHP遭受的一些其他问题。 (我敢说,我个人认为它比JavaScript更糟糕,这种语言也因偷偷摸摸的强制而闻名。)