Javascript 什么实际上是空的?

Javascript 什么实际上是空的?,javascript,php,python,types,null,Javascript,Php,Python,Types,Null,我不知道我问的问题是否正确,但我很好奇为什么PHP、JavaScript和Python对null的解释不同 Javascript: console.log(null === 0); // Outputs false console.log(null + 1); //Outputs 1 , why ? if null isn't equal to zero >>None == 0 >>false PHP var_dump(null === 0); // outputs

我不知道我问的问题是否正确,但我很好奇为什么PHP、JavaScript和Python对
null
的解释不同

Javascript:

console.log(null === 0); // Outputs false
console.log(null + 1); //Outputs 1 , why ? if null isn't equal to zero 
>>None == 0
>>false
PHP

var_dump(null === 0);
// outputs boolean false

var_dump(null + 1);
// outputs int 1, why if null being not equals to zero ?
Python:

console.log(null === 0); // Outputs false
console.log(null + 1); //Outputs 1 , why ? if null isn't equal to zero 
>>None == 0
>>false
由于python None是单例对象,因此添加到它会导致错误

TypeError:不支持+:“NoneType”和“int”的操作数类型

关于其他语言如何解释
NULL
?它应该是什么?
如果
Null
不等于
Zero
,为什么要对其进行加法,它的行为类似于
Zero

您可以查看每种语言的类型比较表来获得一些理解。以下是您列出的3种语言的表格:

然后,您应该检查
null
(或
None
)如何强制转换为其他类型

对于PHP:

  • (int)null
    0
  • (字符串)null
    (空字符串)
对于JS:

  • null+0
    0
    null+1
    1
    ,但是
    parseInt(null)
    NaN
  • null+'
    'null'
    String(null)
    'null'

现在无法检查Python。但是您可以看到为什么它在PHP和JS中的行为是这样的。这种差异背后的原因可能更复杂。

要在Javascript中比较
null
,请使用
==
null===0
可能重复@Tushar right,但结果相同!语言设计和不同的排版规则。将多个语言的空实现和行为进行比较是没有多大意义的。如果一个变量没有值,它是空的,并且指向内存中的某个地方。好吧,哥们,我想知道我们真正认为什么是空的?@ N01ZE,那么你可能需要解释什么“我们真的认为NULL是什么?”事实上means@jonrsharpe是的,你完全正确,我同意你的看法