量子对偶性:变量是空的并且同时未定义?

Art*_*Art 5 javascript comparison

考虑遵循JavaScript代码(在Firefox中测试):

function f(a) {

  if (a == undefined) {
    alert('undefined');
  }

  if (a == null) {
    alert('null');
  }
}

f();
Run Code Online (Sandbox Code Playgroud)

显示两个警报,表明两个语句都是正确的.

你能提供一个合理的解释吗?

SLa*_*aks 10

==是一个"软"平等运算符.
它使用类型强制来比较两个等价的对象.

以下所有情况均属实:

42 == "42"
0 == false
0 == ""
[] == ""
{} == "[object Object]"
'/(?:)/' == new RegExp
Run Code Online (Sandbox Code Playgroud)

相反,您应该使用 ===运算符,它检查严格的相等性.