JavaScript 检查变量是否存在(已定义/初始化)
2011-02-25
2595428
哪种检查变量是否已初始化的方法更好/正确? (假设变量可以保存任何内容(字符串、整数、对象、函数等))
if (elem) { // or !elem
或
if (typeof elem !== 'undefined') {
或
if (elem != null) {
3个回答
您需要
typeof
运算符
。具体来说:
if (typeof variable !== 'undefined') {
// the variable is defined
}
Jim Puls
2009-02-06
typeof
运算符将检查变量是否确实未定义。
if (typeof variable === 'undefined') {
// variable is undefined
}
与其他运算符不同,
typeof
运算符在与未声明的变量一起使用时不会引发
ReferenceError
异常。
但是,请注意
typeof null
将返回
“object”
。我们必须小心避免将变量初始化为
null
的错误。为了安全起见,我们可以改用以下内容:
if (typeof variable === 'undefined' || variable === null) {
// variable is undefined or null
}
有关使用严格比较
===
而不是简单相等
==
的更多信息,请参阅:
在 JavaScript 比较中应使用哪个等号运算符(== 与 ===)?
Samuel Liew
2011-06-28
在许多情况下,使用:
if (elem) { // or !elem
将为您完成工作!...这将检查以下情况:
-
undefined
:如果值未定义并且为
undefined
- null :如果它为空,例如,如果 DOM 元素不存在...
-
空字符串
:
''
- 0 :数字零
- NaN :不是数字
- false
因此它将涵盖所有情况,但总是有一些奇怪的情况我们也想涵盖,例如,带有空格的字符串,就像这个
' '
一样,这将在 javascript 中定义字符串内部有空格...例如,在这种情况下,您可以使用 trim() 添加另一个检查,如:
if(elem) {
if(typeof elem === 'string' && elem.trim()) {
///
此外,这些检查仅适用于
值
,因为对象和数组在 Javascript 中的工作方式不同,空数组
[]
和空对象
{
始终为
true
。
我创建了下面的图片来简要介绍一下答案:
Alireza
2017-09-01