Javascript 中的非空判断 undefined,null, NaN的区别
JS 数据类型
在介绍这三个之间的差别之前, 先来看一下JS 的数据类型。
在 Java ,C这样的语言中, 使用一个变量之前,需要先定义这个变量并指定它的数据类型,是整型,字符串型,....
但是在js 中定义变量统一使用 var , 或者不使用var 也可以使用。
那么js 中是否有数据类型的概念呢? 当然有, 使用 typeof 就可以判断这个变量的数据类型:
<!--Add by oscar999-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Author" CONTENT="oscar999">
<script>
s = "This is Test";
alert(typeof(s));
</script>
</HEAD><BODY></BODY>
</HTML>
以上例子弹出的值是 "string", 由此可以看出, js 也是有数据类型的。
js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型。
原始类型和引用类型有什么区别?引用的概念其他语言的引用很类似, 就是一个地址。看一下这个例子就知道了。
<!--Add by oscar999-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Author" CONTENT="oscar999">
<script>
var obj = new Object();
var objCopy = obj;
obj.att1 = "obj attribute";
alert(objCopy.att1);
</script>
</HEAD><BODY></BODY>
</HTML>
别忽略了object 类型的这种特性哦, 这个是会被经常误用的地方。类似上面的obj的改变引起了objCopy的改变。
除了以上5 中类型之外, 还有一种 “function”的类型。
<!--Add by oscar999-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Author" CONTENT="oscar999">
<script>function test(){alert("hello");}alert(typeof(test));
</script>
</HEAD><BODY></BODY>
</HTML>
undefined 和 null, NaN 的区别
有了上面的介绍,就可以很容易把undefined 和其他的两个区分开来。
undefined判断的是变量的类型,而其他两个判断是变量的值。
undefined可以用来表示以下的状况
1. 表示一个未声明的变量,
2. 已声明但没有赋值的变量,
3. 一个并不存在的对象属性
null 是一种特殊的object ,表示无值;
NaN是一种特殊的number ,表示无值;
比较符(== 或 ===)
使用 == ,如果两边的类型不同, js 引擎会先把它们转成相同的类型在进行值的比较;
使用 ===, 则不会进行类型转换,类型不同,肯定不相等。
实例
有了以上的知识,再来看下面一些有意思却容易混淆的例子应该就很清晰了:
<!--Add by oscar999-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Author" CONTENT="oscar999">
<script>var s;alert(s==undefined); //truealert(s===undefined); //truealert(s==null); //truealert(s===null); //falsealert(null==undefined); //truealert(null===undefined); //false
</script>
</HEAD><BODY></BODY>
</HTML>
把var s 改成 var s = null 再看看效果~~
一般情况下, 对js 某个变量s 判空习惯使用 if(s!=null) , 如果s 没有定义的话,就会报undefined的js 错误, 所以完整的判空可以使用如下方式:
if(typeof(s)!="undefined"&&s!=null)
Javascript 中的非空判断 undefined,null, NaN的区别相关推荐
- 字符串非空判断:StringUtils中 isNotEmpty 和isNotBlank的区别
在项目中,我们用的最多的是StringUtils中的非空判断方法,相信大部分人都用过IsNotEmpty或者 isEmpty方法今天我们要提到的,是isNotBlankpublic static bo ...
- 还在用if(obj!=null)做非空判断?带你快速上手Optional实战性理解!
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 1.前言 相信不少小伙伴已经被java的NPE(Null ...
- JavaScript中如何严格的判断NaN
参考文章:http://www.jb51.net/article/31355.htm 1.问题 在FreeCodeCamp上碰到这样一道题: 删除数组中的所有假值. 在JavaScript中,假值有f ...
- Java 自定义注解实现springMVC 参数校验非空判断,为空 则返回响应为空信息
欢迎关注博主公众号:[纯洁的明依]文章由陈晓阳原创. 本人微信:chenxiaoyangzxy. 免费提供本人大量学习资料. 简单概括定义注解的步骤以及作用: 一:明确注解的使用空间(类 方法 等) ...
- java优雅的非空判断
字符串非空判断: lang3包下的StringUtils StringUtils.isNotBlack(str) StringUtils.isNotEmpty(str) isNotEmpty判断非空不 ...
- js对返回的数据的各种数据类型进行非空判断。
图片: 总结:最近在写公司项目的时候碰到后台返回的数据有好几种类型的非空判断,试了好几种方法,记录一下. 解决方法如下: //0 null undefined {} //Object.keys:这个方 ...
- jeefast 添加非空判断
实体类添加 /*** 班级名*/@NotBlank(message="班级名不能为空",groups= {AddGroup.class,UpdateGroup.class})//非 ...
- String转成double等类型注意非空判断
业务场景: 实体类中某一个变量amount定义的是double类型,set方法进行存值时,存入的值是从数据库中查出的定义为String的字段(数据库中的字段类型不能够更改),此时需要将String转换 ...
- java 非空判断_java基础之----非空判断
大家好,第一次写博客,一直想写博客,用于自我总结,也用于帮助新同学成长. 平常我们开发的时候,用到很多非空判断,但是很多同学用到的地方不是很准确,这里,我把自己平时遇到的坑跟大家说说.我废话不多,只想 ...
最新文章
- php偶尔500,python – 偶尔500错误
- 有雄心的男人才有出息
- 程序员那些年的斗智斗勇!!!
- 脑机接口和卷积神经网络的初学指南(一)
- 企业网站做SEO优化必走的三条路线,希望新人前方不要右转
- python xpath循环_初学Python,就用它爬取一点情话说给她听!
- 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~二 DBContext实例中,表实体对象是怎么被加入的...
- 安卓手机管理_安卓手机:管理工具
- 网站前端,后端设计,系统设计常识
- 服务器查看日志桌面版工具,系统日志查看工具(LogFusion Pro)
- 持有至少百万美元钱包本周增至66,540,增长了150%
- 如何使用Xcode7免费真机调试
- python编程选股_通达信转python,python编写选股公式
- php爬虫分析四六级情况
- vba打开html文件,VBA调用浏览器打开指定网页的几种方法
- android调起浏览器设置头部,Android开发:调起手机浏览器
- WSUS无法发现客户端
- 申城最浪漫的法国普卢旺司餐厅--Bistro Latitude
- Linux常见Bug解决方案
- C++ imagemagick png图片压缩,背景变黑问题
热门文章
- iOS --- [持续更新中] iOS移动开发中的优质资源
- C# winform 使用DsoFramer 创建 显示office 文档
- 干货:基于 Git Flow 的 Git 最佳实践(附加解决大家经常碰到的问题)
- System.UriFormatException: Invalid URI 解决方法
- ubuntu apt-get 时遇到waiting for headers的破解办法
- 全球首发!惯性导航导论(剑桥大学)第五部分
- 计算机视觉目标检测算法总结4——其他SSD系列算法
- 指针大小为什么与类型无关?
- 各种排序算法稳定性比较
- PTA5-16 一元多项式求导 (20分)