JavaScript中null和undefined的比较和区别

在JavaScript中很经常就会出现nullundefined这几种结果,今天就详细的介绍一下null和undefined的定义和区别。

null根据其名字就可以大致看出来意思,就是为空。在js中如果变量这么定义的话var flag=null,这个时候flag就是个空值,将其打印出来也是null。

而undefined则表示未定义,例如:var flag;然后将flag打印出来,此时flag的结果就是undefined。

所以二者之间的区别就是一个是已经定义可是却是为空的,而另一种则是未定义是何种类似的。

下面看一下例子:

var flag1;
		var flag2=null;
		console.log("flag1:"+flag1);
		console.log("flag2:"+flag2);
		console.log("flag1==null?"+(flag1==null));
		console.log("flag1==undefined?"+(flag2==undefined));
		//”==”与”===”是不同的,一个是判断值是否相等,一个是判断值及类型是否完全相等。
		console.log("flag1==flag2?"+(flag1==flag2));
		console.log("flag1===flag2?"+(flag1===flag2));
		console.log("flag1==flag2?"+(flag2=="null"));
		console.log("flag1==flag2?"+(flag1=="undefined"));

运行结果为:

flag1:undefined
flag2:null
flag1==null?true
flag1==undefined?true
flag1==flag2?true
flag1===flag2?false
flag1==flag2?false
flag1==flag2?false

这里需要解释一下的是==于===的区别:

1、对于string,number等基础类型,==和===是有区别的

1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等

2)同类型比较,直接进行“值”比较,两者结果一样

2、对于Array,Object等高级类型,==和===是没有区别的

进行“指针地址”比较

3、基础类型与高级类型,==和===是有区别的

1)对于==,将高级转化为基础类型,进行“值”比较

2)因为类型不同,===结果为false

总结起来就是:”==”与”===”是不同的,一个是判断值是否相等,一个是判断值及类型是否完全相等。

这里需要注意的是:null==undefined结果是true的,null===undefined结果是false的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端知识分享

第111天:Ajax之jQuery实现方法

由于jQuery中的Ajax方法是用了内置的deferred模块,是Promise模式的一种实现,而我们这里没有讲过,所以我们就不使用这一模式啦。

752
来自专栏高性能分布式系统设计

Go的defer和方法修饰符的一个小坑

先看代码: ? ? https://play.golang.org/p/GlM23bSW6zf 可见: 1. for 循环变量只有一份  2. 单行的defer...

3295
来自专栏zhisheng

运算优先级、结合性、求值顺序、副作用和顺序点

标题中这几个概念,是很多C/C++程序员在表达式上容易出问题或不清楚的地方,虽然这些概念在很多语言都有体现,但C里面特别明显,所以就以C语言为例子总结下 运算...

4107
来自专栏JetpropelledSnake

前端学习笔记之ES6快速入门

ES6新增了let命令,用于声明变量。其用法类似var,但是声明的变量只在let命令所在的代码块内有效。

902
来自专栏老马寒门IT

Node入门教程(5)第四章:global 全局变量

global - 全局变量 全局对象(global object),不要和 全局的对象( global objects )或称标准内置对象混淆。这里说的全局的对...

2714
来自专栏前端小栈

你真的会使用XMLHttpRequest吗?

我们通常将Ajax等同于XMLHttpRequest,但细究起来它们两个是属于不同维度的2个概念。

933
来自专栏西枫里博客

TP5中paginate方法丢失url参数的问题

一个简单的应用场景。现在需要在后台对用户产品数据进行搜索,可以对产品名称使用模糊检索,也可以使用产品类别进行分类搜索。因为搜索条件是两个表单项,所以简单了区分搜...

341
来自专栏前端小吉米

打造多线程 Web

843
来自专栏开源优测

[接口测试 - 基础篇] 08 封装个基本的excel解析类

概述 本文基于openpyxl封装一个excel解析类,请注意,不采用Python的任何高级特性,就简简单单的一个类,实现excel的一些基本操作,并演示如何...

3349
来自专栏LIN_ZONE

php中的public、protected、private三种访问控制模式及self和parent的区别(转)

注:在子类覆盖父类的方法时一定要注意,在子类中重写的方法访问权限一定不能低于父类被覆盖的方法的访问权限。例如,如果父类中的访问权限是protected,那么在子...

836

扫码关注云+社区