如何在 JavaScript 中判断变量是 undefined 还是 null
答案:使用相等运算符 (==
)
在 JavaScript 中,如果一个变量已被声明,但尚未被赋值,则自动赋值为 undefined
。 因此,如果您尝试显示此类变量的值,则会显示"未定义"一词。 而 null
是一个特殊的赋值值,它可以被赋值给一个变量作为没有值的表示。
简单来说,你可以说 null
值表示没有值或没有值,而 undefined
表示已声明但尚未分配值的变量 .
要检查变量是否未定义或为空,您可以使用相等运算符 ==
或严格相等运算符 ===
(也称为身份运算符)。 让我们看一下下面的例子:
示例
<script>
var firstName;
var lastName = null;
/* 尝试获取不存在的 DOM 元素 */
var comment = document.getElementById('comment');
console.log(firstName); /* Print: undefined */
console.log(lastName); /* Print: null */
console.log(comment); /* Print: null */
console.log(typeof firstName); /* Print: undefined */
console.log(typeof lastName); /* Print: object */
console.log(typeof comment); /* Print: object */
console.log(null == undefined) /* Print: true */
console.log(null === undefined) /* Print: false */
/* 由于 null == undefined 为真,以下语句将同时捕获 null 和 undefined */
if(firstName == null){
alert('Variable "firstName" is undefined.');
}
if(lastName == null){
alert('Variable "lastName" is null.');
}
/* 由于 null === undefined 为 false,以下语句将仅捕获 null 或 undefined */
if(typeof comment === 'undefined') {
alert('Variable "comment" is undefined.');
} else if(comment === null){
alert('Variable "comment" is null.');
}
</script>
如果您尝试使用 typeof
运算符测试 null
值,它将无法按预期工作,因为 JavaScript 返回 typeof null
的"object"而不是"null"。
这是 JavaScript 中的一个长期存在的错误,但由于网络上的许多代码都是围绕这种行为编写的,因此修复它会产生更多问题,因此设计和维护 JavaScript 的委员会放弃了修复这个问题的想法 .
注意: JavaScript 中的 undefined
不是 保留关键字,因此可以声明一个名称为 undefined 的变量。 因此,测试 undefined
变量或属性的正确方法是使用 typeof
运算符,如下所示:if(typeof myVar === 'undefined')
。
FAQ 相关问题解答
以下是与此主题相关的更多常见问题解答: