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,未定义的变量会报错;

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/554062.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

360浏览器鼠标手势怎么关 取消360浏览器鼠标手势的方法

360浏览器鼠标手势怎么关?鼠标手势&#xff0c;也就是右键滑动动作&#xff0c;对于不习惯使用该功能的用户而言&#xff0c;是一项体验很差的功能&#xff0c;如果你也想要关闭该功能&#xff0c;可以参考下文中的方法进行处理&#xff0c;想要再次开启也可以这样操作。 1、…

vue数组修改不触发视图更新、vue向响应式对象添加或删除属性

背景&#xff1a;在vue开发中会遇到data数据更改后view试图不会进行响应式更新的情况 以下4种情况不触发vue响应式更新&#xff01;&#xff01; 不能检测到的数组变动是&#xff1a; 1、当利用索引直接设置一个项时&#xff0c;例如&#xff1a;vm.items[indexOfItem] newVal…

360浏览器怎样清除缓存

360浏览器怎样清除缓存?很多用户反应360浏览器跳转页面的速度越来越慢&#xff0c;其实这时候有可能是因为缓存太多&#xff0c;下面&#xff0c;小编就为大家介绍下360浏览器清除缓存方法。 1、点击浏览器右上角的“工具”菜单。 2、点击“清除上网痕迹”。 3、在清除上网…

vue.nextTick()方法的使用详解(简单明了)

什么是Vue.nextTick()&#xff1f;&#xff1f; 定义&#xff1a;在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法&#xff0c;获取更新后的 DOM。 所以就衍生出了这个获取更新后的DOM的Vue方法。所以放在Vue.nextTick()回调函数中的执行的应该是会…

猎豹浏览器网页声音怎么关闭 2步关闭网页声音

作为一款主打安全与极速特性的浏览器产品&#xff0c;猎豹浏览器在国内也有不少忠实的粉丝。不过&#xff0c;想要熟练的使用猎豹浏览器中的各种功能&#xff0c;其实并不容易!下面小编就来介绍一下猎豹浏览器关闭网页声音的方法&#xff0c;小伙伴们可不要错过了。 方法步骤 …

vue项目中全局引用jquery 、引用外部js的多种方式(外部纯函数js、外部自执行js、外部js插件),附niceScroll滚动条插件使用

vue项目中全局引用jquery &#xff1a; 1、“ npm install jquery --save ” 命令安装jquery 2、在项目根目录下的 build 目录下找到webpack.base.conf.js 文件&#xff0c;在开头使用以下代码引入webpack&#xff0c;如下 var webpack require(webpack) 3、在webpac…

隐藏浏览器滚动条但内容可以滚动的3种解决方式(简单清晰)

第一种&#xff1a;使用纯css样式属性隐藏滚动条 &#xff1a;火狐浏览器的css写法不兼容 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, i…

QQ浏览器登陆微信的方法

微信是腾讯旗下第二款即时通讯软件&#xff0c;简单明了的功能界面&#xff0c;简洁的聊天窗口收获了大量的用户&#xff0c;而且强大的在线支付功能与支付宝一同为现代中国的网络发展提供了巨大的推力。微信不同于QQ可以直接使用电脑客户端登陆&#xff0c;在早期更是只有手机…

vue生命周期详解、钩子函数的调用(简单易懂)

定义&#xff1a;vue的生命周期是指vue实例从初始化创建到实例销毁的过程。期间会有8个钩子函数的调用。 vue的钩子函数图解&#xff1a; vue的钩子函数使用总结&#xff1a; 1、beforeCreate&#xff08;创建前&#xff09;:beforeCreate钩子函数&#xff0c;这个时候&#x…

QQ浏览器如何查看网站保存的密码

小编日常使用的浏览器大多是QQ浏览器&#xff0c;基于腾讯QQ下的账号同步功能给我带来了许多方便&#xff0c;其中QQ浏览器的账号密码自动保存&#xff0c;同时通过云同步可以在各个终端同步账号密码&#xff0c;所以使用QQ浏览器对常用网络浏览时可以一键免密登录&#xff0c;…

vue-router详尽:编程式导航、路由重定向、动态路由匹配、路由别名、嵌套路由、命名视图

vue-router编程式导航 在vue项目中经常用到this.$router.push() 和 this.$router.replace() 方法进行路由跳转就是编程式导航。。。 通俗理解编程式导航&#xff1a;通过操作$router实例的JavaScript代码实现路由跳转。点击 <router-link :to"..."> 等同于调用…

win10 edge默认浏览器设置更改教程

win10 edge默认浏览器设置更改教程 win10 edge默认浏览器怎么设置?在Win10中&#xff0c;默认浏览器修改已经不再像以前Win7/Win8.1那样容易&#xff0c;已经不能直接通过第三方浏览器设置直接修改&#xff0c;要用到新的“招数”&#xff0c;用户需在“设置”中手动修改。如…

ie浏览器ip代理怎么设置

核心提示&#xff1a;经常上网的朋友经常会遇到想使用代理IP上网的情况&#xff0c;但是又苦恼不知道怎么设置&#xff0c;小编这就告诉大家怎么在IE浏览器上设置代理IP上网。 ie浏览器ip代理怎么设置&#xff1f;经常上网的朋友经常会遇到想使用代理IP上网的情况&#xff0c;…

理解JavaScript中this的指向详解

this的定义和理解&#xff1a; this是JavaScript语言的一个关键字&#xff0c;它是函数运行时&#xff0c;在函数体内部自动生成的一个对象&#xff0c;只能在函数体内使用。 1、this和执行环境对象有关&#xff0c;和函数的声明无关。 var name"Tom";var Bob{name:…

如何设置PP视频允许PPAP驻留

今天继续给大家分享PP视频方面的内容。   如何设置PP视频允许PPAP驻留&#xff0c;将让下次启动时更加快速&#xff0c;下面让我们一起看看&#xff0c;是如何设置的吧 1、点击“PP视频” 2、在“PP视频”播放窗口中&#xff0c;点击“菜单”按钮 3、在弹出下拉栏中&#…

深入理解call、apply、bind(改变函数中的this指向)

在JavaScript中call、apply、bind是Function 对象自带的三个方法&#xff0c;这三个方法的主要作用是改变函数中的 this 指向&#xff0c;从而可以达到接花移木的效果。本文将对这三个方法进行详细的讲解&#xff0c;并列出几个经典应用场景。 区分&#xff1a; 1、call(objec…

360浏览器设置多标签操作步骤

360浏览器设置多标签操作步骤 360浏览器怎么设置多标签?昨天小编写了一篇如何使用ie7浏览器设置多个主页的文章&#xff0c;就有小伙伴留言给小编360浏览器能否实现这项功能?当然有!下面小编就介绍操作方法&#xff1a; 1、打开360浏览器&#xff0c;在左上角找到“工具”点…

形参和实参是什么?? shim和polyfil是什么意思??

形参和实参是什么&#xff1f;&#xff1f; 实参(argument)&#xff1a; 全称为"实际参数"是在调用时传递给函数的参数. 实参可以是常量、变量、表达式、函数等&#xff0c; 无论实参是何种类型的量&#xff0c;在进行函数调用时&#xff0c;它们都必须具有确定的值…

占内存最小的浏览器:360安全浏览器超速版推荐

占内存最小的浏览器&#xff1a;360安全浏览器超速版推荐 占内存最小的浏览器有哪些?今天小编为大家推荐的是360安全浏览器超速版。本站提供360安全浏览器超速版最新正式版及抢票专版下载。那360安全浏览器超速版怎么样?看看小编整理的资料就清楚了。 360安全浏览器超速版资…

PS人像修图,通道磨皮、高低频磨皮、滤镜磨皮、人像精修

1、快速简单美肤-----高斯模糊磨皮&#xff1a; 原理 是高斯模糊蒙版。这种磨皮方法主要是针对面部的斑点及细纹。 操作流程概括&#xff1a;复制背景图层 》【滤镜】|【模糊】|【高斯模糊】命令 》 按‘Alt’键添加图层蒙版 》 在蒙版上使用画笔涂抹出想要模糊的地方》曲线…