两个操作数之间的相等比较,其中一个操作数可能未定义

时间:2012-04-10 22:47:11

标签: javascript

if (typeof operand1 != "undefined" && operand1 == operand2) {
}

上面是一个if语句,用于检查 operand1 operand2 之间的相等性,其中 operand1 可能是{{1在某些情况下。我想知道undefined是否是不必要的。

2 个答案:

答案 0 :(得分:3)

由于您使用==运算符而非===运算符,因此仅当operand2永远不会null时才有必要。

但您可以更改if statement以使用===运算符,只有当operand2“真正等于”operand1时才会通过,这意味着operand2也是undefined

你可以在这里阅读更多相关信息:
Which equals operator (== vs ===) should be used in JavaScript comparisons?

显示此处所写内容的fiddle


Data Base世界中,null(或undefined)不算什么,这意味着您无法将其与任何内容进行比较。

SQL示例:

SELECT *
FROM   table_name t
Where  t.operand1 = null

是一个错误,因为没有什么等于null,而null不等于任何东西,它只是不存在。

javascript中它不是那样,您可以将内容与nullundefined进行比较,但您必须小心{{1} s,就像这样:

TypeError

答案 1 :(得分:2)

我唯一一次说在检查两个变量值的相等性之前必须进行typeof检查是否可能无法定义其中一个(operand1),从而阻止{ {1}}。

jsFiddle