同样是空值,null和undefined有什么异同?
时间:2022-07-22
本文章向大家介绍同样是空值,null和undefined有什么异同?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
JavaScript有5种简单数据类型(基本数据类型)和1种复杂书数据类型;
- 基本数据类型:
Undefined
,nul
,Boolean
,Number
,String
; - 复杂数据类型:
Object
;
以下比较一下两种表示空值的数据类型,null
和 undefined
。
1.null
null
表示一个特殊值,常用来描述“空值”。
对null执行typeof操作,结果返回字符串"object" ,null可以认为是一个特殊的对象值,含义是非对象。
从逻辑上看,null
表示一个空对象指针。
let dog = null;
console.log(typeof(dog)); // object
- 实际上,通常认为null是它自有类型的唯一一个成员,可以表示 数字 , 字符串 ,对象 是 无值的。
- 如果定义的变量准备在将来用于保存对象,最好将该变量初始化为
null
,而不是其他值.这样一来,只要直接检查null
值就知道相应的变量是否已经保存了一个对象的引用。
if(car!=null)
{
//对car对象执行某些操作
}
1234
2.undefined
undefined
也被用来表示值的空缺,表示未定义,undefined
值表示更深层次的"空值".所有不存在的值,都表示为 undefined
。
它是变量的一种取值,表明变量没有初始化,如果声明了一个变量,但未对其进行初始化时,则该变量的类型就是 undefined
,如下:
let a;
console.log(typeof(a));//undefined
不对变量进行初始化和将变量初始化为 undefined
,其结果是一致的,如下:
let b;
console.log(typeof(b));
let c = undefined;
console.log(typeof(b)==typeof(c) ? true : false);//true
一般而言,不需要显式的把一个变量的值设置为
undefined
,该值的引入主要是为了区分 空对象指针 和 未经初始化的变量.
未定义的变量和定义但未初始化的变量的类型都是 undefined
,
let c; //未初始化
//d d未定义
console.log(typeof(c));//undefined
console.log(typeof(d));//undefined
console.log(c);//undefined
console.log(d);//出错
即便未初始化的变量会被自动赋予undefind值,但显式的初始化变量依然是更好的选择和习惯,如果能做到这一点,那么当typeof返回
undefined
时,我们就知道被检测的变量还没有被声明(即不存在),而不是尚未初化。
let e = null;
//f不存在
console.log(typeof(e));//object
console.log(typeof(f));//undefined
3.null和undfined的联系和区别
-
undefined
值 是派生自null
值的,两者 在==
下是相等的,但在===
(严格相等)下是不相等的。
console.log(null == undefined ? true:false);//true
console.log(null === undefined ? true:false);//false
-
null
是一个 object,是存在的,undefined
是未定义,表示的是不存在的某个东西。
参考资料
- 《JavaScript高级程序设计》
- 《JavaScript权威指南》
- LVS中采用Jboss作为RealServer的配置要点
- 基于Prometheus的数据库监控
- Uva-------(11462) Age Sort(计数排序)
- hdu----(2848)Repository(trie树变形)
- 【MySQL】主从GTID复制修复
- hdu---(1800)Flying to the Mars(trie树)
- 解决Tomcat数据连接池无法释放
- hdu----(1075)What Are You Talking About(trie之查找)
- hdu--(1247)Hat’s Words(trie树)
- HDU----(4519)郑厂长系列故事——体检
- 张戈博客成功启用移动端主题:Mobile Pack
- Oracle数据库性能障碍分析利器:SYSTEMSTATE DUMP介绍
- hdu ---(4517)小小明系列故事——游戏的烦恼(Dp)
- HTTP加速器varnish安装小记(1)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 在页面上写一个验证码
- 缓冲字节输出流BufferedOutputStream
- EL表达式获取简单数据与复杂数据(调用类)+EL表达式获取Map集合与list集合数据
- 用缓冲字节流,复制一个照片
- 09小结:封装结果集或实体类时,有多个对象的解决方法
- 序列化与反序列化Serializable,Externalizable
- response.getWriter().write()和 response.getWriter().print()的区别:
- java使用TCP,由客户端向服务端传输图片,(电脑与电脑)或(同一台电脑)
- 使用druid
- UDP实现多人聊天室
- 请求(doFilter)与响应乱码(BaseController+自定义注解@ContentType(““))集中处理
- 反射:Reflect(获取类对象三种方法)
- getParameterMap()返回参数需要对应实体类类型,否则收不到----打卡
- 类对象 与 类的对象
- Lambda什么时候使用+简化匿名内部类