Js中判断变量存不存在的问题
2016-05-25 17:06
543 查看
前面写过jquery对象存在与否的判断。现在谈下Js中判断变量存不存在的问题。
如果这样if(!a),当变量a在js中没有申明时,就会报错,那么接下去的代码将不会被执行。注意,这种判断只要变量申明过,if条件都会通过。比如
以上代码会弹出两个“通过”。说明这种判断只是判别变量是否在js里声明过,而不管其内容时什么。更深层的解释是:undefined和null在if语句中,都会转换为false。
对于没有申明过的变量情况,上述判断不行了。应该用typeof,例子:
上述代码的3个弹窗:第1个走if,第2,3都走else。虽然变量c并没有声明,但程序不会报错。而只声明的b,跟c的结果一样。注意,不要试图把3个看上去重复的弹窗封装成1个函数,因为对于变量c这样的传值,都会报错!实际应用中,都是在if里面判断 ,也用不着函数封装。
可能会有好奇,a的typeof 不等于 “undefined”,事实上,typeof null返回“object”:
typeof返回的字符串有限,null,Array,自定义的对象类型都会返回“object”,如果我们要详细的判断,则需要借助instanceof了。Java中也有此方法,含义是判断某个变量是否属于某个类,是个二元运算符,而typeof是一个一元运算符(变量只有1个)。Instanceof的例子很多,网上搜搜。
如果这样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的例子很多,网上搜搜。
相关文章推荐
- JSON的定义
- 基于JS实现textarea中获取动态剩余字数的方法
- js将json格式的对象拼接成复杂的url参数方法
- JS循环执行函数setInterval
- 溢出文本省略号的js实现
- JSON:JSON对象和JSON数组混排的复杂字符串
- [RxJS] Filtering operators: takeLast, last
- 欢迎使用CSDN-markdown编辑器
- Javascript判断页面刷新或关闭的方法
- js 正则 demo
- 解决DWZ框架文件上传没有关闭当前的dialog的问题
- javascript 笔记——setTimeout的参数问题
- [RxJS] Filtering operators: take, first, skip
- phaser.js入门篇
- js将本地时间与服务器时间同步
- js prototype介绍
- js every扩展
- [RxJS] Filtering operator: filter
- [JavaScript] 判断键盘同时按某些键时执行操作。
- 各个JSON技术的比较