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

时间:2010-11-19 03:48:56

标签: javascript comparison

考虑使用以下JavaScript代码(在Firefox中测试):

function f(a) {

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

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

f();

显示两个警报,表明两个陈述均为真。

你能提供合理的解释吗?

1 个答案:

答案 0 :(得分:10)

==是一个“软”等式运算符 它使用类型强制来比较两个等价的对象。

以下所有情况均属实:

42 == "42"
0 == false
0 == ""
[] == ""
{} == "[object Object]"
'/(?:)/' == new RegExp

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