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条件中的判定相关推荐

  1. 区分JavaScript中的undefined,null和NaN

    区分underfined,null和NaN 先看看下面语句的运行结果: 1: var a; 2: alert(a); //显示"undefined" 3: alert(typeof ...

  2. Javascript 中 null、NaN和undefined的区别

    1.类型分析: js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型. 代码 var a1; var a2 = tr ...

  3. javascript中not defined、undefined、null以及NaN的区别

    [ 前言 ] 从踏入IT行业开始,我就发现技术人员写博客很有必要.如果不写博客,时间久了就像好比天天在外面建房子的人,没有一个自己的房子一样.不管学习紧不紧,工作忙不忙,多动手进行梳理总结,一方面是为 ...

  4. 2022-JavaScript-过滤数组中的undefined,null,空串,NaN

    2022-JavaScript-过滤数组中的undefined,null,空串,NaN let arr = [1,'',2,null,3,NaN,4,unfined,5,'',6] let arr1 ...

  5. Undefined、Null和NaN有什么区别?

    目录 数据类型比较 定义 nudefined null NaN 比较 数据类型比较 undefined和null为JS中的基本数据类型,NaN表示Not A Number! 看代码如下 console ...

  6. html 判断boolean,js关于if()else{}中的判定条件的认识,各种数据类型转换为Boolean类型的转换规则...

    if()中的判断条件其实是转换成Boolean类型对Boolean类型的判断 String类型 var a="test"; if(a){ alert("yes" ...

  7. js中null,undefined,false,0,'',[],{}判断方法

    目录 1.数据类型 2.JSON字符串 3.数字类型 4.非的布尔值 5.与非比较 一.单独判断 1.null 2.undefined 3.0 4."" 5.判断undefined ...

  8. js 中null,undefined区别

    首先摘自阮一峰先生的文章: 大多数计算机语言,有且仅有一个表示"无"的值,比如,C语言的NULL,Java语言的null,Python语言的None,Ruby语言的nil. 有点奇 ...

  9. null == undefined ?

    转载自: 作者:一像素 www.cnblogs.com/onepixel/p/7337248.html 最近在看<JavaScript高级程序设计>一书,书中讲到相等操作符(==)时说,要 ...

最新文章

  1. git创建与合并分支
  2. bgi::detail::minmaxdist用法的测试程序
  3. 引用wx.getclipboarddata中的内容_教材、图书在引用时要注意哪些方面
  4. Resharper 和 Rider 的奇淫技巧,你知道多少?
  5. 漫画:什么是八皇后问题
  6. How to add jdk8 in Eclipse Indigo
  7. php中unset函数是在哪一章_PHP unset函数好奇怪 -
  8. python类中self关键字用法
  9. 如何处理 Kubeadm 搭建的集群证书过期问题
  10. insertBefore方法(javascript与jQuery)
  11. DSP28335之中断系统笔记
  12. Matlab中凸优化工具包CVX的安装、注册与使用
  13. 适合新手的python练习(9)
  14. Jenkins插件配置国内镜像
  15. Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 8.074 s <<< FAILURE - in com.xxx.X
  16. 胆结石饮食有什么禁忌?
  17. Visual Studio “另一个安装程序已开始运行。请先等它完成,然后再重试”和“正在进行其他安装,请稍后重试...”解决方法
  18. IT企业职业道德的反思
  19. 推荐两款mac管理应用软件
  20. get_transform is not allowed to be called from a MonoBehaviour constructor (or instance field initia

热门文章

  1. visual studio过期登录不了账户_具有最高管理权限账户,Windows 7设置Administrator密码永不过期...
  2. c# 模拟登陆 webbrowser 抓取_《VR+电力——更换绝缘子培训》已登陆Pico Neo 2
  3. es统计有多少个分组_ES 24 - 如何通过Elasticsearch进行聚合检索 (分组统计)
  4. pycharm运行模型时怎么设置权重?_使用AMP和Tensor Cores得到更快速,更节省内存的PyTorch模型...
  5. python非法语句是_python 如何优雅的处理大量异常语句?
  6. [转载] 字符串操作截取后面的字符串_对字符串的5个必知的熊猫操作
  7. Floyd Warshall算法
  8. Java StreamTokenizer nextToken()方法与示例
  9. 回溯算法解决八皇后_4皇后问题和使用回溯算法的解决方案
  10. mysql gtid配置_mysql 5.7 GTID主从配置