WEB 教程
实践 示例
HTML 参考手册
CSS 参考手册
PHP 参考手册

如何在 JavaScript 中判断变量是 undefined 还是 null

主题:JavaScript / jQuery上一页|下一页

答案:使用相等运算符 (==)

在 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 相关问题解答

以下是与此主题相关的更多常见问题解答:

Advertisements