js基础中Null、undefined、NaN、false、0、{}的理解及使用

数据类型:

值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。

引用数据类型:对象(Object)、数组(Array)、函数(Function)。

JavaScript 变量均为对象。当您声明一个变量时,就创建了一个新的对象。

注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。

 

简单理解:

null值表示一个空对象指针。如果定义的变量准备用来保存对象,那么最好将该变量初始化为null而不是其他值。这样一来,只要直接检查null值就可以知道相应的变量是否已经保存了一个对象的引用。

undefined 表示一个未声明的变量,或已声明但没有赋值的变量,或一个并不存在的对象属性

NaN是一个Number类型的的特殊值,表示“非数字”(Not a Number)。NaN是JavaScript之中唯一不等于自身的值,不等于任何值,包括它本身。NaN在布尔运算时被当作false,NaN与任何数(包括它自己)的运算,得到的都是NaN当运算失败或者运算无法返回正确的数值时,就会返回NaN。

isNaN()会将括号内的参数利用Number()进行一次转换,故对于字符串、部分对象、部分数组、undefined等,isNaN()会返回true

 

 

typeof()函数

typeof()函数返回的是字符串,有六种可能:"number"、"string"、"boolean"、"object"、"function"、"undefined";

不足:typeof()函数不能区分对象、数组、正则,对它们操作都返回"object"正则在Safar5,Chrome7之前的版本中返回"function";

ES6新增:Symbol(ES6新增)=> "symbol"

  • console.log(typeof(a)); //typeof(undefined) 为 undefined
  • console.log(typeof(b)); //typeof(null) 为 object
  • console.log(typeof(c)); //typeof(NaN) 为 number

 

 

运算使用

  • IF条件运算中undefined、null、NaN、false、0、""、false都是相对等于(==)false的,{}和[]是true;
  • 其中  "undefined==null" 和 "0==false"、" '  '==false" 的关系运算结果都是true

 

 let a;let b=null;let c=NaN;let d=0;let e={};let f="";console.log(typeof(a));  //typeof(undefined) 为 undefinedconsole.log(typeof(b));  //typeof(null) 为 objectconsole.log(typeof(c));  //typeof(NaN) 为 numberconsole.log(typeof(f));  //typeof(NaN) 为 numberfunction testBoolean(data){if(data){console.log(data+" is true");}else {console.log(data+" is false!");}}testBoolean(a);   //undefined的布尔运算值是falsetestBoolean(b);   //null的布尔运算值是falsetestBoolean(c);   //NaN的布尔运算值是falsetestBoolean(d);   //0的布尔运算值是falsetestBoolean(e);   //空对象的布尔运算值是truetestBoolean(f);   //空字符串的布尔运算值是falseconsole.log('--------------------');console.log(undefined==null);  //true,因为undefined是null派生出来的console.log(undefined===null);  //false,因为值相同类型不同console.log('--------------------');console.log(false==null);  //falseconsole.log(false==undefined);  //falseconsole.log(0==null);  //falseconsole.log(0==undefined);  //falseconsole.log(""==null);  //falseconsole.log(""==undefined);  //falseconsole.log(null==0);  //falseconsole.log('--------------------');console.log(""==0);  //trueconsole.log(false==0);  //true

注意:如下null和undefined在关系运算中,-在某种意义上,null就是空的意思,undefined就是未定义,两者既不是false也不是true,所以出现null==false以及null==true,你会发现返回的结果都是false,
-但是如果用他们两者作为判断条件的话,在判断条件中他们可以当做false来作为if语句的判断

    console.log(undefined==true);  //falseconsole.log(undefined==false); //falseconsole.log(null==true);  //falseconsole.log(null==false); //false

 

 

判断是否为null的方法有:

//方法一
var exp =null; 
if (!exp && typeof(exp)!="undefined" && exp!=0) //代表逻辑false,非undefined类型,非false、""
{ alert("is null"); 
} //方法二
if (exp===null) //绝对相等
{ alert("is null 2"); 
} 

 

检验空对象或者空数组:

	
JSON.stringify(obj) === '{}';JSON.stringify(obj) === '[]'

 

参考网址:NaN的理解 https://www.jianshu.com/p/747d7ee493fc

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

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

相关文章

解决vue的{__ob__: observer}取值问题

vue编码中经常出现获取到的数据是:{__ob__: Observer} 格式的,详细如下 可能导致后续数据操作错误,如何获取其中的数值呢 解决方法如下: 将返回的数据data先转换为JSON字符串形式,然后再从字符串形式转换成JSON格式JS…

Js数组去重的多种方法

方法一 原理&#xff1a;利用双层循环将相邻元素 arr[i]和arr[i1] 进行比较&#xff0c;相等则数组删除arr[i1] 下标元素 var arr [1,23,1,1,1,3,23,5,6,7,9,9,8,5]; function removeDuplicatedItem(arr) {for(var i 0; i < arr.length-1; i){for(var j i1; j < ar…

qq浏览器网站禁止访问怎么办 qq浏览器网站禁止访问如何解决

打开手机的QQ浏览器说访问网页被禁止&#xff0c;是设置错误造成的&#xff0c;解决方法如下&#xff1a; 1、首先在手机屏幕上左右滑动&#xff0c;找到安装好的QQ浏览器的图标。 <a styleqq浏览器网站禁止访问怎么办 qq浏览器网站禁止访问如何解决"> 2、接下来…

计算机基础:程序、进程、线程

进程、线程、多线程相关总结 一、说说概念 1、进程&#xff08;process&#xff09; 狭义定义&#xff1a;进程就是一段程序的执行过程。 广义定义&#xff1a;进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元&#xff0…

Win7系统局域网抢网速的方法

Win7旗舰版局域网怎么抢占网速?最近有很多使用Win7系统的用户问小编&#xff0c;反应自己在局域网下玩游戏的时候很卡&#xff0c;因为很多人在用网络&#xff0c;导致自己的游戏、看电影很不爽。那么遇到这样的问题怎么办呢?下面&#xff0c;就给大家介绍Win7系统局域网抢网…

win7打印机提示无法保存设置错误0x00006cc的处理方法

win7允许快速连接共享打印机&#xff0c;这让用户少了不少设置烦恼&#xff0c;那如果在打印机的快速设置中提示错误0x00006cc代码要怎么解决呢?快跟小编一起来看看win7打印机提示无法保存设置错误0x00006cc的处理方法吧。 win7打印机提示无法保存设置错误0x00006cc的处理方法…

磁卡、ID卡、IC卡、M1卡、CPU卡的理解区分

一、磁卡 磁卡是在一张塑料片上均匀地涂布上一层磁性微 粒材料制成的。 刚生产出来的磁卡上面的磁性微粒是不显磁性的&#xff0c; 这样的磁卡就象一张白纸&#xff0c; 人们需要在磁卡里输入一些信息才能使用。 那么信息是怎样被记录的呢&#xff1f;这就需要纪录磁头 的帮助…

U盘装win7系统出现question(1808)的原因与解决方法

U盘装系统是很多用户和电脑城装机员的首选&#xff0c;这种方法简单快捷&#xff0c;一学就会。但也有用户在安装系统过程中会碰到一些问题&#xff0c;question(1808)便是常见问题之一。这是什么原因呢?下面我们就一起来看看U盘装win7系统出现question(1808)的原因与解决方法…

软考计算机基础:存储系统

软考计算机存储系统笔记&#xff1a; 存储器分类&#xff1a; 1、按存储位置分为内存和外存&#xff1b; 2、按存储材料分为磁存储&#xff08;使用磁存储介质&#xff09;、半导体存储&#xff08;分为双极型和MOS型&#xff0c;根据数据是否需要刷新可以分为静态SRAM存储器…

Win7系统组策略怎么打开 打开组策略的几种方法

在很多情况下&#xff0c;我们都会用到组策略编辑器来对电脑进行一些高级的设置&#xff0c;组策略的作用就是将管理员为用户和计算机定义并控制程序、网络资源及操作系统行为的主要工具。那么&#xff0c;在Win7系统下&#xff0c;我们要怎么打开组策略呢?下面&#xff0c;小…

vscode统计代码行数,前端开发配置、快捷键使用

1、统计代码行数 使用场景是项目年终统计行数。 实现&#xff1a;在需要统计得文件夹右键“在文件夹中查找“ &#xff0c;后输入筛选得正则表达式 ^b*[^:b#/].*$ (注意右边小图标都点亮) 这里顺便将自己使用vscode进行前端开发环境配置归纳一下&#xff0c;便于自己以后快速…

360下载器怎么打开 360下载器使用方法

360下载器怎么打开?360下载器是360安全浏览器极速浏览器中的一个下载组件&#xff0c;组件中包含了迅雷下载支持&#xff0c;所以下载文件的速度比使用ie自带的下载器会快很多。不少刚接触360安全浏览器的用户反应在使用360安全浏览器下载文件程序之后无法找到下载器所在位置&…

vue-cli打包后怎么修改服务器地址实践有效

前言&#xff1a;公司vue项目使用 npm run build 打包生成dist文件部署后&#xff0c;当需要修改服务器端地址时候就又需要重新配置url并打包部署&#xff0c;为简化部署测试工作&#xff0c;想实现通过修改服务器地址的配置文件来实现修改打包后的项目服务器地址。 项目基于vu…

干净高效的搜索引擎

找一个干净好用的搜索引擎&#xff0c;好文转载备忘 为什么不用百度搜索引擎&#xff0c;估计一百个人会有一百个理由。 百度最让人诟病的还是它的竞价排名&#xff0c;其实要赚钱无可厚非&#xff0c;但这吃相……前几天看到知乎上有人发了张百度和谷歌搜索的对比图&#xf…

手机360浏览器怎么清空历史记录 手机360浏览器历史记录清空方法分享

任何一款浏览器产品在使用一段时间后都会出现历史记录&#xff0c;手机360浏览器自然也不能例外。而这些历史记录如果长期不清理的话&#xff0c;则导致手机越来越卡!那么&#xff0c;手机360浏览器怎么清空历史记录?不清楚具体操作的朋友&#xff0c;可以参考一下小编分享的方…

vue使用class添加动态类

<template><d2-container><h3>class使用测试页面</h3><p :class"1 < 2 ? red-font : blue-font">使用三元表达式;</p><p :class"[red-font,blue-bg]">使用数组包含多个类名;</p><p :class"{r…

守塔人奥列

“在这个世界里&#xff0c;事情不是上升&#xff0c;就是下降。不是不降&#xff0c;就是上升!我现在不能再进一步向上爬了。上升和下降&#xff0c;下降和上升&#xff0c;大多数的人都有这一套经验。归根结底&#xff0c;我们最后都要成为守塔人&#xff0c;从一个高处来观察…

vue图片加载失败使用默认图片,el-image支持懒加载,自定义占位、加载失败等

<template><d2-container><h3>image加载失败使用默认图片</h3><img src""alt"test1.png":onerror"errorImg" /><hr><h3>el-image懒加载、大图预览、加载占位、加载失败、</h3><div class&qu…

win7系统开机蓝屏提示hardware Monitor的解决方法

电脑蓝屏是使用过程中比较常见的问题&#xff0c;出现这种状况&#xff0c;系统一般会将错误信息显示在屏幕上&#xff0c;我们只需根据系统错误代码提示&#xff0c;找出问题根源&#xff0c;再对症下药就可以了。下面小编就来教大家win7系统开机蓝屏提示hardware Monitor的解…

el-table表格在表头和数据行添加图标、处理数据

通过header插槽自定义表头&#xff1a; <template slot"header" slot-scope"scope">... </template>可以通过scope.row.columnName 获取单元项数据进行数据处理&#xff1a; <template slot-scope"scope"><span :class&…