在JavaScript开发中,直接访问未声明的变量会抛出ReferenceError。本文详细解析了判断变量是否未定义的常见误区,对比了直接比较undefined与使用typeof运算符的区别,并推荐在条件判断中使用typeof进行安全检测,以避免运行时异常。
JavaScript判断变量未定义的方法
在JavaScript代码中,经常会出现与undefined相关的错误。本文将分析此类错误产生的原因以及相应的处理方案。当使用var声明一个变量但未进行初始化时,该变量的值默认为undefined。此时,若要判断变量是否已定义,可以使用typeof运算符。以下通过具体示例进行说明。
if(!result){
alert("发生错误");
}
上述代码直接运行时会抛出异常,因为变量result在未被声明的情况下就被使用了。下面介绍几种正确的写法。
正确写法与错误示例对比
(1)
if("undefined" == typeof result){
alert("发生错误");
}
(2)
var result;
if(undefined == result){
alert("发生错误");
}
(3)
if("undefined" == typeof result){
alert("发生错误");
}
补充说明
例如:
if(!myVar01)alert("发生错误");
// 该代码直接发生异常,因为变量myVar01没有申明 if("undefined" == typeof myVar01)alert("发生错误");
// 这样写才不至于发生异常
而: var myVar01; if(undefined == myVar01)alert("发生错误");
// 该代码会正确运行 if("undefined" == typeof myVar01)alert("发生错误"); // 该代码同样会正确运行
结论:我们采用下面的方式来保证万无一失 if("undefined" == typeof myVar01)alert("发生错误");
// 该代码同样会正确运行
当然,判断数据的有效性远不止这些,还包括对null值的判断,以及检查数字是否超出界限。
实例
实际应用中的变量检测
<script>
//最常用
if("undefined" == typeof('a')){
//未定义
}else{
//定义
}
if("undefined" == typeof a){
//未定义
}else{
//定义
}
if(typeof a != "undefined"){
//true 定义
}else{
//false 未定义
}
</script>
实际应用:
downlm有的页面我们不定义,但有的页面定义了,就可以需要这样的判断方法,没有定义的就不执行。
if("undefined" != typeof downlm){
if(downlm=="soft"){
document.write('成功');
}
}
经测试完美。