[赏金编辑]
当您应该设置/使用 null
时,我正在寻找一个很好的解释。或 undefined
以及您需要检查的地方。基本上这两者的常见做法是什么,并且真的可以在通用可维护代码中分别对待它们?
我什么时候可以安全地检查 === null
,安全地检查 === undefined
我什么时候需要用 == null
来检查两者
什么时候应该使用关键字undefined
什么时候应该使用关键字null
我有各种格式的支票if (someObj == null)
或 if (someObj != null)
检查 null 和 undefined。我想将所有这些更改为 === undefined
或 === null
但我不确定如何保证它只会是两者之一,而不是两者之一。
您应该在哪里使用检查 null
以及您应该在哪里使用检查 undefined
一个具体的例子:
var List = []; // ordered list contains data at odd indexes.
var getObject = function(id) {
for (var i = 0; i < List.length; i++) {
if (List[i] == null) continue;
if (id === List[i].getId()) {
return List[i];
}
}
return null;
}
var deleteObject = function(id) {
var index = getIndex(id) // pretty obvouis function
// List[index] = null; // should I set it to null?
delete List[index]; // should I set it to undefined?
}
这只是我可以同时使用
null
的一个示例或
undefined
我不知道哪个是正确的。
是否有任何情况下您必须同时检查
null
和
undefined
因为你别无选择?
请您参考如下方法:
函数隐式返回 undefined
.数组中未定义的键是 undefined
.对象中未定义的属性是 undefined
.
function foo () {
};
var bar = [];
var baz = {};
//foo() === undefined && bar[100] === undefined && baz.something === undefined
document.getElementById
返回
null
如果没有找到元素。
var el = document.getElementById("foo");
// el === null || el instanceof HTMLElement
您永远不必检查
undefined
或
null
(除非您从可能返回 null 的源和可能返回 undefined 的源中聚合数据)。
我建议你避免
null
;使用
undefined
.