js变量不存在代码将不会被执行不显示的问题解决方法

2024-02-15 18:17:19 举报文章

前面写过jquery对象存在与否的判断。现在谈下Js中判断变量存不存在的问题。

如果这样if(!a),当变量a在js中没有申明时,就会报错,那么接下去的代码将不会被执行。注意,这种判断只要变量申明过,if条件都会通过。比如

<script>
var a = null;
var b;
if(!a){
	alert("通过")
}
if(!b){
	alert("通过")
}
</script>

以上代码会弹出两个&ldquo;通过&rdquo;。说明这种判断只是判别变量是否在js里声明过,而不管其内容时什么。更深层的解释是:undefined和null在if语句中,都会转换为false。

对于没有申明过的变量情况,上述判断不行了。应该用typeof,例子:

<script>
var a = null;
var b;
if(typeof a!="undefined"){
	alert("is defined")
	}else{
	alert(" is undefined")
	}
	
if(typeof b!="undefined"){
	alert("is defined")
	}else{
	alert(" is undefined")
	}

if(typeof c!="undefined"){
	alert(" is defined")
	}else{
	alert(" is undefined")
	}

</script>

上述代码的3个弹窗:第1个走if,第2,3都走else。虽然变量c并没有声明,但程序不会报错。而只声明的b,跟c的结果一样。注意,不要试图把3个看上去重复的弹窗封装成1个函数,因为对于变量c这样的传值,都会报错!实际应用中,都是在if里面判断 ,也用不着函数封装。

可能会有好奇,a的typeof 不等于 &ldquo;undefined&rdquo;,事实上,typeof null返回&ldquo;object&rdquo;:

<script>
var a = null;
alert(typeof a)//object
</script>

typeof返回的字符串有限,null,Array,自定义的对象类型都会返回&ldquo;object&rdquo;,如果我们要详细的判断,则需要借助instanceof了。Java中也有此方法,含义是判断某个变量是否属于某个类,是个二元运算符,而typeof是一个一元运算符(变量只有1个)。Instanceof的例子很多,网上搜搜。

如果你认为本文可读性较差,内容错误,或者文章排版错乱,请点击举报文章按钮,我们会立即处理!