Javascript 两个操作数之间的相等比较,其中一个操作数可能未定义
上面是检查操作数1和操作数2之间是否相等的Javascript 两个操作数之间的相等比较,其中一个操作数可能未定义,javascript,Javascript,上面是检查操作数1和操作数2之间是否相等的if语句,其中操作数1在某些情况下可能是未定义的。我想知道操作数1的类型是否为“未定义”是不必要的 因为您使用的是==运算符而不是==运算符,所以只有当操作数2永远不会为空时,才不需要使用该运算符 但是您可以将if语句更改为使用==运算符,只有操作数2真正等于操作数1时,该运算符才会传递,这意味着操作数2也是未定义的 您可以在此处阅读更多信息: A显示了这里写的内容 在数据库世界中,空(或未定义)什么都不是,这意味着您无法将其与任何东西进行比较 SQ
if
语句,其中操作数1在某些情况下可能是未定义的
。我想知道操作数1的类型是否为“未定义”
是不必要的 因为您使用的是==
运算符而不是==
运算符,所以只有当操作数2
永远不会为空时,才不需要使用该运算符
但是您可以将if语句更改为使用==
运算符,只有操作数2
真正等于操作数1
时,该运算符才会传递,这意味着操作数2
也是未定义的
您可以在此处阅读更多信息:
A显示了这里写的内容
在数据库
世界中,空
(或未定义
)什么都不是,这意味着您无法将其与任何东西进行比较
SQL示例:
if (typeof operand1 != "undefined" && operand1 == operand2) {
}
是一个错误,因为没有任何东西等于null,null不等于任何东西,它只是不存在
在javascript
中不是这样的,您可以将事物与null
和未定义的
进行比较,但是您必须小心使用类型错误
,如下所示:
SELECT *
FROM table_name t
Where t.operand1 = null
在检查两个变量的值是否相等之前,我要说的唯一一次是,当其中一个(operan1
)可能未定义时,有必要进行typeof
检查,以防止出现ReferenceError
.@gdoron我没有说未定义
,我说的是未定义,因为在中,作用域链中没有名为操作数1
的变量。谢谢您的回答。你提出了一个很好的观点。我只希望我能接受不止一个答案。我想你的小提琴有错。即使typeof operan1!=“未定义”
存在。@ahmoo小提琴是用来演示引用错误的。尝试取消注释我注释的位。您的最后一个示例不正确。这将是TypeError
,就像未定义的一样,它有属性,也不能有属性。@gdoron您能详细解释一下“只有当操作数2永远不会是错误值时,它才是不必要的”的意思吗?假设操作数2可以是假值,我想看一个例子,其中'typeof operan1!=“未定义”是必需的。Thx@ahmoo. 答案有点错误,我改正了。无论如何,你可以在我添加到答案中的演示中看到一个例子。现在清楚了吗?@gdoron-是的,这个例子和你的进一步解释现在已经清楚了。谢谢非常感谢。
var x;
x.foo; // TypeError!