最佳答案
我发现了以下代码:
function test(data) {
if (data != null && data !== undefined) {
// some code here
}
}
我对 JavaScript 有些陌生,但是从我在这里读到的其他问题来看,我的印象是这段代码没有多大意义。
如果在typeof
以外的任何上下文中访问未定义的变量,就会得到一个错误。
更新: 上面的(引用)答案可能有误导性,应该说 “一个未声明的变量”,而不是 “一个未定义的变量”。
正如我所发现的,在 瑞安、 [俄语]和 新闻中心的答案中,即使没有向函数提供参数,它的参数变量也总是声明的。这个事实也证明下面列表中的第一项是错误的。
据我所知,可能会出现以下情况:
调用该函数时没有参数,因此使 data
成为未定义的变量,并在 data != null
上引发错误。
函数是用 null
(或 undefined
)作为参数调用的,在这种情况下,data != null
已经保护了内部代码,使得 && data !== undefined
无用。
该函数是用非空参数调用的,在这种情况下,它将传递两个 data != null
还有 data !== undefined
。
问: 我的理解正确吗?
我在 Firefox 的控制台中尝试了以下方法:
--
[15:31:31.057] false != null
[15:31:31.061] true
--
[15:31:37.985] false !== undefined
[15:31:37.989] true
--
[15:32:59.934] null != null
[15:32:59.937] false
--
[15:33:05.221] undefined != null
[15:33:05.225] false
--
[15:35:12.231] "" != null
[15:35:12.235] true
--
[15:35:19.214] "" !== undefined
[15:35:19.218] true
我想不出 data !== undefined
之后 data != null
有什么用。