博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转载)Javascript 中的非空判断 undefined,null, NaN的区别
阅读量:5234 次
发布时间:2019-06-14

本文共 1080 字,大约阅读时间需要 3 分钟。

原文地址:

在介绍这三个之间的差别之前, 先来看一下JS  的数据类型。

在 Java ,C这样的语言中, 使用一个变量之前,需要先定义这个变量并指定它的数据类型,是整型,字符串型,....

但是在js 中定义变量统一使用 var , 或者不使用var 也可以使用。

那么js 中是否有数据类型的概念呢? 当然有, 使用 typeof 就可以判断这个变量的数据类型:

New Document

以上例子弹出的值是 "string", 由此可以看出, js 也是有数据类型的。

js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型。

原始类型和引用类型有什么区别?引用的概念其他语言的引用很类似, 就是一个地址。看一下这个例子就知道了。

New Document

别忽略了object 类型的这种特性哦, 这个是会被经常误用的地方。类似上面的obj的改变引起了objCopy的改变。

除了以上5 中类型之外, 还有一种 “function”的类型。

New Document

 undefined 和 null, NaN 的区别

有了上面的介绍,就可以很容易把undefined 和其他的两个区分开来。

undefined判断的是变量的类型,而其他两个判断是变量的值。

undefined可以用来表示以下的状况

1. 表示一个未声明的变量,

2. 已声明但没有赋值的变量,

3. 一个并不存在的对象属性

 

null 是一种特殊的object ,表示无值;

NaN是一种特殊的number ,表示无值;

 

比较符(== 或 ===)

使用 == ,如果两边的类型不同, js 引擎会先把它们转成相同的类型在进行值的比较;

使用 ===, 则不会进行类型转换,类型不同,肯定不相等。 

 

实例

有了以上的知识,再来看下面一些有意思却容易混淆的例子应该就很清晰了:

New Document

把var s 改成 var s = null 再看看效果~~

一般情况下, 对js 某个变量s 判空习惯使用 if(s!=null) , 如果s 没有定义的话,就会报undefined的js 错误, 所以完整的判空可以使用如下方式:

if(typeof(s)!="undefined"&&s!=null)

  

转载于:https://www.cnblogs.com/hanfan/p/9987195.html

你可能感兴趣的文章
网络操作系统第一、二章习题
查看>>
如何做一名好的web安全工程师?
查看>>
shell 面试题
查看>>
企业选择 多云管理平台 六大注意事项
查看>>
命名规范
查看>>
sql server去掉某个字段前后空格问题
查看>>
VMware系统运维(十四)部署虚拟化桌面 Horzion View Manager 5.2 配置许可
查看>>
WebForm-带接口工厂模式的三层架构
查看>>
按钮的设计
查看>>
三月七号的内容
查看>>
泛型数据生成Excel
查看>>
Web API学习——Web API 强势入门指南
查看>>
URL与URI的区别
查看>>
SQL*Plus 系统变量之33 - NULL
查看>>
ora-02292:违反完整约束条件(XXX.FKXXX)- 已找到子记录
查看>>
第二十八篇 玩转数据结构——堆(Heap)和有优先队列(Priority Queue)
查看>>
问题-[DelphiXE2]提示第三控件不存在
查看>>
StringBuffer类的构造方法
查看>>
Oracle Corp甲骨文公司推出Oracle NoSQL数据库2.0版
查看>>
安卓输入子系统之inotify与epoll机制【学习笔记】【原创】
查看>>