null 和 undefined 的区别
一、概念
undefined 表示未定义,就是应该有值但是还没有赋值,连null的值都没有赋予
null 代表空值,空引用。
二、区别
1. null 和 undefined 虽然值的结果是相等的,但是其所代表的语义是完全不一样的(==是相等的)。
undefined 代表了某个变量完全不存在,在内存中完全能不存在这个标识符所指向的地址;
null 代表了内存中是存在这个变量的,只是我在某些情况下需要把这个变量原本的值给覆盖了,将它设置为一个空。
2. null 转为数值是 0 ; undefined 转为数值是 NAN(not a number)。
3. null 通过 typeof 判断类型的时候结果的输出是 object ; 而 undefined 的类型是 undefined 。
那么为什么 typeof null 是 object ?
null 和 undefined 都是js语言的基础数据类型, 都是原始值类型,但是 typeof null 是 object ,是因为不同的对象在底层都表现为二进制,在 JavaScript 中二进制前三位都为 0 的话会被判断为 object 类型,null 的二进制全部都为 0 ,前三位自然也是 0 ,所以执行 typeof 值会返回 object 。
4. null 是 js 语言的关键字,是不允许用户用来作为标识符声明变量的,但是 undefined 可以,undefined 不是关键字。
在 node 环境中,我们声明的 undefined 会将原本的 undefined 覆盖的,但是在浏览器环境中不会,是因为浏览器中的 undefined 是直接被使用 Object.defineProperty 定义在了全局对象 window 上,默认就已经被配置成为了:值不可修改并且不可以被重新进行配置。
三、null 和 undefined分别在实际项目中出现的场景有哪些
1、 undefined
a. 变量被声明了,但是没有被赋值;
b. 调用函数的时候,应该给函数传参却没有给函数传这个参数打印出来就是 undefined;
c. 访问一个对象中没有的属性;
d. 函数没有返回值时,默认就会返回undefined。
2、 null
a.作为对象原型链的终点出现;
b.当我们访问一个不存在的dom节点的时候。
null 和 undefined 的区别相关推荐
- js的基本类型有哪些?引用类型有哪些?(二)------null和undefined的区别
null和undefined的区别 1.类型的区别 console.log(typeof(undefined));//undefined console.log(typeof(null));//obj ...
- 第一讲javascript入门(js的组成、事件类型、嵌入方式、注释方式、输出方式、变量类型 、变量命名规则、字符串转义符、算术运算符、数据类型转换、null和undefined的区别)
目录 理论: JavaScript是什么 js的组成 二.JavaScript引入方式 1.嵌入式 2.外部引入 事件定义 三.JavaScript注释方式 1.单行注释 2.多行注释 四.JavaS ...
- null 和undefined的区别,以及undefined和undeclared的区别
null 和undefined的区别,以及undefined和undeclared的区别 首先undefined是指声明一个变量但是没有对他初始化,则此变量为undefined.比如: let c ; ...
- js中null和undefined的区别
在JavaScript开发中,被人问到:null与undefined到底有啥区别? 一时间不好回答,特别是undefined,因为这涉及到undefined的实现原理. 总所周知:null == un ...
- 【小程序】【Tips】image 组件中 null 和 undefined 的区别和对策
image 组件我们经常用到,有时候image是没有加载,有时候是本来定义没有,一个是null,一个是undefined ,两者有什么区别呢? <image wx:if="{{note ...
- js中 NaN、 null 及 undefined 的区别(转载)
NaN:保留字(表明数据类型不是数字) undefined:对象属性或方法不存在,或声明了变量但从未赋值. 即当你使用了对象未定的属性或者未定义的方法时或当你声明一个变量,但你确从未对其进行赋值,便对 ...
- null 与 undefined 的区别
[转自阮一峰]www.ruanyifeng.com/blog/2014/0- null 表示没有对象: 即此处不应该有值 用途为: 作为函数的参数表示该函数的参数不是对象 作为对象原型链的终点 代码为 ...
- 为什么null为对象,并且null和undefined有什么区别?
为什么在JavaScript中将null视为object ? 正在检查 if ( object == null )Do something 与...相同 if ( !object )Do someth ...
- JavaScript检查null与undefined以及==和===之间的差异
如何检查变量是否为null或undefined并且null和undefined什么区别? ==和===什么区别(很难在Google上搜索" ===")? #1楼 区别是微妙的. 在 ...
- JavaScript的数据类型、null 和undefined、原始数据类型和引用数据类型等JavaScript基础知识总结
一.JavaScript里有哪些数据类型,解释清楚null 和undefined,解释清楚原始数据类型和引用数据类型.比如讲一下1 和Number(1)的区别 数据类型: undefined,没有定义 ...
最新文章
- 如何用Neo4j和Scikit-Learn做机器学习任务?| 附超详细分步教程
- 《Div+CSS 3.0网页布局案例精粹》扫描版[PDF]
- 使用 EF Core 的 EnableRetryOnFailure 解决短暂的数据库连接失败问题
- 将单词的首字母转换成大写
- 率土之滨显示未选择服务器是什么意思,率土之滨随机合服方案热门问题解答
- Hadoop学习笔记—4.初识MapReduce
- php 网站计数器,PHP实现网站访问量计数器
- 运用c++结束学校机房红蜘蛛控制软件
- 浅谈ThreadPool 线程池
- trnsys and matlab 联合仿真常见错误解决方案
- error C2440: “类型转换”: 无法从“LPVOID”转换为“double
- 警惕!关于5G的最新骗局!
- led大屏按实际尺寸设计画面_微间距LED大屏幕拼接显示系统设计方案
- Python的那些事
- spring-xxx-xxx-0.0.1-SNAPSHOT.jar中没有主清单属性
- AliOS-Things--EMW3060 (9)uart
- 18.9.23 PION模拟赛
- 11类商标有空调商标哦
- 关于结构化、半结构化、非结构化数据的理解
- 基于STM32的多功能MP3设计 毕业设计(论文)开题报告
热门文章
- Number精度超了怎么办
- python如何更改背景颜色_python背景颜色,python改背景色
- 熊猫酒仙服务器位置,刀塔传奇里熊猫酒仙全面分析
- openoffic需要的jar包
- dota英雄装备攻略,最全的英雄出装攻略介绍
- 撤销对计算机所有的更改 不断重启,win10撤销更改无限重启怎么解决
- 【BUgStation】RStudio rsession.ese无法找到入口通过更新R解决
- 用禅道编写测试用例(详细)
- 接口测试用例怎么写?一文1600字教你写一个优秀的接口测试的测试用例
- 绝对免费搭建不限速私人网盘5T存储空间:Gearhost免费空间+OneIndex程序+Onedrive免费账号