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的例子很多,网上搜搜。
Js中判断变量存不存在的问题的更多相关文章
- [JS]js中判断变量类型函数typeof的用法汇总[转]
1.作用: typeof 运算符返回一个用来表示表达式的数据类型的字符串. 可能的字符串有:"number"."string"."boolean&q ...
- js 中判断变量是数组还是对象,和判断对象是否为空
判断是对象还是数组 var ids={ id:'1',num:'2' } if(Array.isArray(ids) == false) {console.log('不是数组,对象') } else ...
- js中判断变量不为空或null
var content=$("content").val(); if(!content){ alert("请输出内容!"); return; ...
- js中判断对象具体类型
大家可能知道js中判断对象类型可以用typeof来判断.看下面的情况 <script> alert(typeof 1);//number alert(typeof "2" ...
- 在C中判断变量存储类型(字符常量/数组/动态变量)
在C中判断变量存储类型(字符常量/数组/动态变量) 在chinaunix论坛上有人问到关于变量存府类型的问题,我觉得可以写个测试代码加深大家对内存使用和布局的理解.下面我把原问题及处理办法贴出来,限供 ...
- Javascript开发技巧(JS中的变量、运算符、分支结构、循环结构)
一.Js简介和入门 继续跟进JS开发的相关教程. <!-- [使用JS的三种方式] 1.HTML标签中内嵌JS(不提倡使用): 示例:<button onclick="javas ...
- JavaScript 基础——使用js的三种方式,js中的变量,js中的输出语句,js中的运算符;js中的分支结构
JavaScript 1.是什么:基于浏览器 基于(面向)对象 事件驱动 脚本语言 2.作用:表单验证,减轻服务器压力 添加野面动画效果 动态更改页面内容 Ajax网络请求 () 3.组成部分:ECM ...
- JS中的变量和输入输出
一.使用JS的三种方式 1.在HTML标签中,直接内嵌JS(并不提倡使用) <button onclick="alert('点你咋地')">点我</button& ...
- js中判断数据类型的四种方法总结
js中判断数据类型的四种方法 前言 在js中,我们经常需要判断数据的类型,那么哪些方法可以用来判断数据的类型呢?哪种方法判断数据类型最准确呢? 我们来一个个分析: 1.typeof typeof是一个 ...
随机推荐
- intellij idea 的历史版本
开发工具intellij idea 的历史版本https://www.jetbrains.com/idea/download/previous.html
- GOF23设计模式之代理模式
GOF23设计模式之代理模式 核心作用:通过代理,控制对对象的访问.可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理(即:AOP的微观实现) AOP(Asp ...
- mybatis传入两个String类型的参数
1.项目spring +mybatis +oracle 2.报错信息: [DEBUG] -- :: org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debu ...
- 教你 Shiro + SpringBoot 整合 JWT
本篇文章将教大家在 shiro + springBoot 的基础上整合 JWT (JSON Web Token) 如果对 shiro 如何整合 springBoot 还不了解的可以先去看我的上一篇文章 ...
- Django(六)
一.一大波model操作 1. 创建数据库表 # 单表 # app01_user ==> tb1 # users class User(models.Model): name = models. ...
- Yarn的工作流程
http://study.163.com/course/courseLearn.htm?courseId=1002887002#/learn/video?lessonId=1003346099& ...
- 具体解释Hibernate中的事务
1.前言 上一篇博客解说了Hibernate中的一级缓存,属于Session级别的.这篇博客解说一下Hibernate中的事务机制. 有关事务的概念.请參照通俗易懂数据库中的事务. 2.怎样处理Hi ...
- java中tcp小样例
服务端: ServerSocket service = new ServerSocket(7777); Socket socket = service.accept(); InputStream in ...
- RBF网络——核心思想:把向量从低维m映射到高维P,低维线性不可分的情况到高维就线性可分了
RBF网络能够逼近任意的非线性函数,可以处理系统内的难以解析的规律性,具有良好的泛化能力,并有很快的学习收敛速度,已成功应用于非线性函数逼近.时间序列分析.数据分类.模式识别.信息处理.图像处理. ...
- hdoj--1045--Fire Net(二分图)
Fire Net Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...