zoukankan      html  css  js  c++  java
  • Js中判断变量存不存在的问题

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

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

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

      

    以上代码会弹出两个“通过”。说明这种判断只是判别变量是否在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 不等于 “undefined”,事实上,typeof null返回“object”:

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

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

  • 相关阅读:
    Spring_IOC理论推导
    第一个Mybatis及运行问题分析
    Spring_简介
    ECharts_雷达图
    ECharts_饼图
    ECharts_直角坐标系的常用配置
    ECharts_散点图
    ECharts_折线图
    util之日期工具类
    util之Json工具类
  • 原文地址:https://www.cnblogs.com/xiaochongchong/p/5527732.html
Copyright © 2011-2022 走看看