如何在jQuery中检查未声明变量是否为undefined或null避免报错
错误根因
你直接在判断条件中读取未声明的myArray变量,JavaScript 引擎访问未声明的变量时会直接抛出引用错误,也就是你看到的控制台报错,对应中文含义为:未捕获的引用错误:myArray 未定义。
另外你之前尝试的条件判断存在两个错误:
- 直接读取未声明变量触发报错
- 逻辑运算符误用
||(或),即便变量已声明,该条件也会永远返回true,无法实现校验效果
正确实现方案
方案1:使用typeof判断(兼容性最好,支持判断任意作用域变量)
typeof运算符访问未声明的变量时不会抛出错误,会直接返回字符串undefined,是最稳妥的判断方式:
// 先判断变量是否已定义且不为空 if (typeof myArray !== 'undefined' && myArray !== null) { var obj = JSON.parse(JSON.stringify(myArray)); var initialPreview; if(obj.initialPreview) { initialPreview = obj.initialPreview; } }
方案2:全局变量专属判断(更简洁)
如果myArray是全局作用域下声明的变量,你可以直接通过window对象访问判断,访问对象不存在的属性只会返回undefined,不会抛出引用错误:
if (window.myArray != null) { var obj = JSON.parse(JSON.stringify(window.myArray)); var initialPreview = obj.initialPreview ?? undefined; }
注:
!= null的写法会同时过滤undefined和null两种情况,等价于!== undefined && !== null,写法更简洁。
内容的提问来源于stack exchange,提问作者user3733831
相关产品推荐
相关产品推荐

