在我的Javascript代码中,我正在检查变量是否未定义(未定义值,但未定义变量)或null。修剪代码我正在使用运算符。我就是这样做的:
if (myVariable === (undefined || null)) {
// Do something.
}
我的一位朋友告诉我,我应该把支票分成:
if (myVariable === undefined || myVariable === null) {
// Do something.
}
这两种方法之间真的有什么区别吗?如果是,我应该使用哪一个以及为什么?
答案 0 :(得分:3)
首选:if (typeof myVariable === "undefined" || myVariable === null) {
。
variable === undefined vs. typeof variable === "undefined"
因为使用if (myVariable === undefined) {
您的控制台可能会返回错误或警告。
像这样:
ReferenceError: myVariable is not defined
if (myVariable === undefined) {
PS:(undefined || null)
始终 null (因为未定义返回 false )。
答案 1 :(得分:2)
===
运算符比较了2个操作数(值)。
如果myVariable === (undefined || null)
操作数为:myVariable
,表示它所持有的值,(undefined || null)
表示值null
,因为操作数(表达式)必须在比较之前进行评估。 (undefined || null)
表达式的计算结果为null
。
因此,您的解决方案与myVariable === null
完全相同。
如果您遵循相同的想法并评估您的朋友提议,您将看到他的建议是正确的。
答案 2 :(得分:1)
这是因为(undefined || null)
始终评估为null
,因此当myVariable
未定义时,您的第一个表达式始终为false。第二个变体是你想要的正确。
答案 3 :(得分:1)
是的,确实如此。对于您的示例,undefined
等于false
,那么null
也等于false
,最后一个值从表达式返回。所以这就是为什么第一种方法等于if (myVariable === null) { ... }
。第二种方法更可取,但如果你不是一个JavaScript:好的部分'伙计,你可以坚持if (myVariable == null) { ... }
或if (myVariable == undefined) { ... }
。