null、undefined、NaN区分解析和条件判定,以及在IF条件中的判定
NaN的理解和用法:
NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。可以把 Number 对象设置为该值,来指示其不是数字值。
Number.NaN 是一个特殊值,说明某些算术运算(如求负数的平方根)的结果不是数字。通常用于检测 parseFloat()
和 parseInt()
的结果,以判断它们表示的是否是合法的数字。当然也可以用 isNaN()
函数来检测算数错误,比如用 0
作除数的情况。
注意:请使用 isNaN() 来判断一个值是否是NaN属性。原因是 NaN 与所有值都不相等,包括它自己。
var aa=0/0;
if(isNaN(aa)){ //isNaN()方法时判断数值是NaN类型的方法;console.log("aa 是非数值");
}
Undefined的理解和使用:
undefined 是全局对象的一个属性,表示声明但没有赋值的变量,或一个并不存在的对象属性。
注意:
1、不能使用for/in 来 undefined 属性,也不能使用delete运算符来删除它,
2、undifined不是常量,可以把它设置为其他值;比如var undefined='foo'
3、可以使用 propName===“undefined” typeof(propName)===“undefined”或 的形式确定变量是否是undefined;
4、一个函数如果没有使用return指定返回值,将会返回一个undefined值;
5、null==undefined ;
6、undefined 作为if(undefined){}的条件时是false;!undefined作为条件时相当于true;
(function(){var b,c=NaN,d="",e=false,f={},g=null,h={name:"zhangsan",age:27};console.log(b); //输出undefined,未赋值的变量console.log(h.class); //输出undefined,并不存在的对象属性console.log(typeof(undefined)); //输出undefined,类型console.log(b==undefined); //输出true, null==undefinedconsole.log(b===undefined); //输出true,可以作为变量的条件判断console.log(undefined==undefined);//输出trueconsole.log(undefined===undefined);//输出trueconsole.log(undefined==NaN); //输出falseconsole.log(undefined==""); //输出falseconsole.log(undefined==false); //输出falseconsole.log(undefined=={}); //输出falseconsole.log(undefined==null); //输出trueconsole.log(undefined===null); //输出false,undefined和null不能绝对相等//console.log(k); //未声明变量会报错:k is not definedfunction test(n){console.log(typeof(n));} //输出undefinedconsole.log(test()); //输出undefinedvar undefined='foo'; //这样使得undefined的值和类型都发生了改变,要避免这样使用console.log(undefined,typeof(undefined)); //输出foo stringconsole.log(undefined);//输出undefinedconsole.log(!undefined);//输出true})();
7、typeof()的使用
a、typeof()不会在变量未声明的情况下报错:
if(typeof(x)==="undefined"){console.log("typeof方法不会再变量未声明的情况下报错");}
b、typeof() 方法返回的字符串有6种可能,分别是:number、string、boolean、object 、function 、 undefined
NULL的理解和使用:
值 null
特指对象的值未设置。它是 JavaScript基本类型 之一。可以理解为未指向任何对象的变量,或者是理解为尚未创建的对象;不等于空对象
(function(){var a=null; console.log(typeof(a)); //输出:objectconsole.log(null==undefined); //输出:trueconsole.log(null===undefined); //输出:falseconsole.log(null==false); //输出:falseconsole.log(null=={}); //输出:falseconsole.log(null==null); //输出:trueconsole.log(null); //输出:trueconsole.log(!null); //输出:nullconsole.log(isNaN(1+null)); //输出:falseconsole.log(isNaN(1+undefined)); //输出:trueif(null){ //输出:null在条件中是falseconsole.log("null在条件中是true");}else{console.log("null在条件中是false");;}})();
1、判断null:
var arr=[false,null,'',0,undefined,-1];for(var i=0;i<arr.length;i++){if (!arr[i] && typeof(arr[i])!="undefined" && arr[i]!=0){console.log(arr[i]);}}
if (false==0){ //为trueconsole.log("IF条件中false==0");}if (""==0){ //为trueconsole.log("IF条件中''==0");}if ([]==0){ //为trueconsole.log("IF条件中[]==0");}if ({}==0){ //为falseconsole.log("IF条件中{}==0");}
DEMO测试常见变量在 IF条件中的是false 或true??
(function(){var a,b=-1,c=1,d=0,e=null,f=undefined,g='',h=NaN,i = false,j=true,k=[],l={};if (a) {console.log("a值是未赋值变量,在IF条件中 is true");}else{console.log("a值是未赋值变量,在IF条件中 is false");}if (b) {console.log("b值是负数,在IF条件中 is true");}else{console.log("b值是负数,在IF条件中 is false");}if (c) {console.log("c值是正数,在IF条件中 is true");}else{console.log("c值是正数,在IF条件中 is false");}if (d) {console.log("d值是0,在IF条件中 is true");}else{console.log("d值是0,在IF条件中 is false");}if (e) {console.log("e值是null,在IF条件中 is true");}else{console.log("e值是null,在IF条件中 is false");}if (f) {console.log("f值是undefined,在IF条件中 is true");}else{console.log("f值是undefined,在IF条件中 is false");}if (g) {console.log("g值是空字符串,在IF条件中 is true");}else{console.log("g值是空字符串,在IF条件中 is false");}if (h) {console.log("h值是NaN,在IF条件中 is true");}else{console.log("h值是NaN,在IF条件中 is false");}if (i) {console.log("i值是布尔值false,在IF条件中 is true");}else{console.log("i值是布尔值false,在IF条件中 is false");}if (j) {console.log("j值是布尔值true,在IF条件中 is true");}else{console.log("j值是布尔值true,在IF条件中 is false");}if (k) {console.log("k值是空数组,在IF条件中 is true");}else{console.log("k值是空数组,在IF条件中 is false");}if (l) {console.log("l值是空对象,在IF条件中 is true");}else{console.log("l值是空对象,在IF条件中 is false");}if (m) {console.log("未声明的变量,在IF条件中 is true");}else{console.log("未声明的变量,在IF条件中 is false");}})();
打印结果如下图:
综上得出结论是:未赋值变量、0、null、undefined、空字符串、NaN、布尔值false在IF条件中都是false,未定义的变量会报错;
null、undefined、NaN区分解析和条件判定,以及在IF条件中的判定相关推荐
- 区分JavaScript中的undefined,null和NaN
区分underfined,null和NaN 先看看下面语句的运行结果: 1: var a; 2: alert(a); //显示"undefined" 3: alert(typeof ...
- Javascript 中 null、NaN和undefined的区别
1.类型分析: js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型. 代码 var a1; var a2 = tr ...
- javascript中not defined、undefined、null以及NaN的区别
[ 前言 ] 从踏入IT行业开始,我就发现技术人员写博客很有必要.如果不写博客,时间久了就像好比天天在外面建房子的人,没有一个自己的房子一样.不管学习紧不紧,工作忙不忙,多动手进行梳理总结,一方面是为 ...
- 2022-JavaScript-过滤数组中的undefined,null,空串,NaN
2022-JavaScript-过滤数组中的undefined,null,空串,NaN let arr = [1,'',2,null,3,NaN,4,unfined,5,'',6] let arr1 ...
- Undefined、Null和NaN有什么区别?
目录 数据类型比较 定义 nudefined null NaN 比较 数据类型比较 undefined和null为JS中的基本数据类型,NaN表示Not A Number! 看代码如下 console ...
- html 判断boolean,js关于if()else{}中的判定条件的认识,各种数据类型转换为Boolean类型的转换规则...
if()中的判断条件其实是转换成Boolean类型对Boolean类型的判断 String类型 var a="test"; if(a){ alert("yes" ...
- js中null,undefined,false,0,'',[],{}判断方法
目录 1.数据类型 2.JSON字符串 3.数字类型 4.非的布尔值 5.与非比较 一.单独判断 1.null 2.undefined 3.0 4."" 5.判断undefined ...
- js 中null,undefined区别
首先摘自阮一峰先生的文章: 大多数计算机语言,有且仅有一个表示"无"的值,比如,C语言的NULL,Java语言的null,Python语言的None,Ruby语言的nil. 有点奇 ...
- null == undefined ?
转载自: 作者:一像素 www.cnblogs.com/onepixel/p/7337248.html 最近在看<JavaScript高级程序设计>一书,书中讲到相等操作符(==)时说,要 ...
最新文章
- git创建与合并分支
- bgi::detail::minmaxdist用法的测试程序
- 引用wx.getclipboarddata中的内容_教材、图书在引用时要注意哪些方面
- Resharper 和 Rider 的奇淫技巧,你知道多少?
- 漫画:什么是八皇后问题
- How to add jdk8 in Eclipse Indigo
- php中unset函数是在哪一章_PHP unset函数好奇怪 -
- python类中self关键字用法
- 如何处理 Kubeadm 搭建的集群证书过期问题
- insertBefore方法(javascript与jQuery)
- DSP28335之中断系统笔记
- Matlab中凸优化工具包CVX的安装、注册与使用
- 适合新手的python练习(9)
- Jenkins插件配置国内镜像
- Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 8.074 s <<< FAILURE - in com.xxx.X
- 胆结石饮食有什么禁忌?
- Visual Studio “另一个安装程序已开始运行。请先等它完成,然后再重试”和“正在进行其他安装,请稍后重试...”解决方法
- IT企业职业道德的反思
- 推荐两款mac管理应用软件
- get_transform is not allowed to be called from a MonoBehaviour constructor (or instance field initia
热门文章
- visual studio过期登录不了账户_具有最高管理权限账户,Windows 7设置Administrator密码永不过期...
- c# 模拟登陆 webbrowser 抓取_《VR+电力——更换绝缘子培训》已登陆Pico Neo 2
- es统计有多少个分组_ES 24 - 如何通过Elasticsearch进行聚合检索 (分组统计)
- pycharm运行模型时怎么设置权重?_使用AMP和Tensor Cores得到更快速,更节省内存的PyTorch模型...
- python非法语句是_python 如何优雅的处理大量异常语句?
- [转载] 字符串操作截取后面的字符串_对字符串的5个必知的熊猫操作
- Floyd Warshall算法
- Java StreamTokenizer nextToken()方法与示例
- 回溯算法解决八皇后_4皇后问题和使用回溯算法的解决方案
- mysql gtid配置_mysql 5.7 GTID主从配置