干货技术→JavaScript

乍一看,null和undefined看起来可能相同,但它们远非如此。本文将探讨JavaScript中null和undefined之间的差异和相似之处。

如果你对编程感兴趣或者想往编程方向发展,可以关注微信公众号【筑梦编程】,大家一起交流讨论!小编也会每天定时更新既有趣又有用的编程知识!

什么是null

null有两个特性需要明白:

  • null是空值或不存在的值
  • 必须指定null

下面是一个例子,将null赋值给变量a

let a = null;
console.log(a); // null

什么是undefined

undefined最通常意味着已声明变量,但未定义变量。例如:

let b;
console.log(b); // undefined

也可以显式设置变量等于undefined:

let c = undefined;
console.log(c); // undefined

最后,当查找对象中不存在的属性时,将收到undefined:

var d = {};
console.log(d.fake); // undefined

null和undefined之间的相似之处

在JavaScript中,只有六个假值。 null和undefined都是六个假值中的两个。下面是一个完整的清单:

  • false
  • 0 (zero)
  • "" (empty string)
  • null
  • undefined
  • NaN (Not A Number)

JavaScript中的任何其他值都被认为是真实的。同样在JavaScript中,有六个原始值。 null和undefined都是原始值。这是一个完整的清单:

  • Boolean
  • Null
  • Undefined
  • Number
  • String
  • Symbol

JavaScript中的所有其他值都是对象(对象,函数,数组等)。

有趣的是,当使用typeof测试null时,它返回对象:

let a = null;
let b;
console.log(typeof a); // object
console.log(typeof b); // undefined

这是从JavaScript开始以来发生的,并且通常被认为是原始JavaScript实现中的错误。

null !== undefined

如您所见,null和undefined不同,但有一些相似之处。因此,有意义的是null不严格等于undefined。

null !== undefined

但是,这可能会让你感到惊讶,null松散地等于未定义。

null == undefined

在JavaScript中,double等于测试松散相等和预成型类型强制。这意味着我们在将它们转换为通用类型后比较两个值。

实际差异

null和undefined之间的实际区别呢?考虑下面的代码:

let logHi = (str = 'hi') => {console.log(str);
}

上面的代码创建了一个名为logHi的函数。此函数需要一个参数,如果未提供该参数,则将该参数的默认值设置为hi。这是看起来像:

logHi(); // hi

我们还可以提供一个参数来覆盖这个默认值:

logHi('bye'); // bye

使用默认参数时,undefined将使用默认值,而null则不使用默认值。

logHi(undefined); // hi
logHi(null); // null

总结

  • null是指定的值,不代表任何意思。
  • undefined通常表示已声明变量但尚未定义。
  • null和undefined是假值。
  • null和undefined都是原语。但是,错误显示 typeof null = object。
  • null !== undefined 但 null == undefined。

一元流量参数为null_了解JavaScript中null和undefined之间的差异和相似之处相关推荐

  1. 探索JavaScript中Null和Undefined的深渊

    当讨论JavaScript中的原始数据类型时,大多数人都知道的基本知识,从String,Number到Boolean.这些原始类型相当简单,行为符合常识.但是,本文将更多聚焦独特的原始数据类型Null ...

  2. 一元流量参数为null_精益SQL —— “NULL”真烦人

    还记得在一次面试中,被面试官问了这样一个问题 当连接两个表时,如果连接键有NULL值,最后返回的结果会是什么样? 实话实说,当时我连问题都没听懂...直到有一天,我看了<SQL基础教程>. ...

  3. 如何快速找出找出两个数组中的_找出JavaScript中两个数组之间的差异

    LeetCode今天面临的挑战是在数组中查找所有消失的数字. 蛮力 我们的输入包括一个缺少数字的实际数组.我们想将该数组与相同长度的数组进行比较,其中没有遗漏的数字.所以如果给定的话[4,3,2,7, ...

  4. 一元流量参数为null_汉中市政排污水流量计欢迎选购

    广州顺仪自动化设备有限公司为您详细解读PtIDim汉中市政排污水流量计欢迎选购的相关知识与详情,使用办法 电磁流量计有两个运转形态:主动丈量形态和参数设置形态. 正在燃气热水器长进行了检测尝试,尝试安 ...

  5. 一元流量参数为null_为什么牛逼的程序员都不用 “ ! = null quot; 做判空?

    问题 为了避免空指针调用,我们经常会看到这样的语句 ...if (someobject != null) {someobject.doCalc();}... 最终,项目中会存在大量判空代码,多么丑陋繁 ...

  6. JavaScript中null与undefined的比较

    这两种类型近乎相等,都表示空值,在实际的操作中console.log(null == undefined)会输出true.但是它们之间有些的差别的,主要从定义.字面意思.使用情况等考虑. 从最初的的区 ...

  7. JavaScript中调皮的undefined

    JavaScript中调皮的undefined 在JavaScript中undefined只是一个标识符,不是关键字,这个很不靠谱的标识符还不能像其他符号一样随意使用,一方面是需要它的原始值保持不变, ...

  8. javaScript学习笔记之typeof, null, 和 undefined之间的对比

    typeof 操作符 你可以使用 typeof 操作符来检测变量的数据类型. null 在 JavaScript 中 null 表示 "什么都没有". null是一个只有一个值的特 ...

  9. Objective-C中强项和弱项之间的差异

    本文翻译自:Differences between strong and weak in Objective-C I'm new to Obj-C, so my first question is: ...

最新文章

  1. sqlalchemy中的first_or_404()和get_or_404()使用(前端页面可视化操作——查询和添加)
  2. 快速上手RaphaelJS--RaphaelJS_Starter翻译(二)
  3. jQuery兼容IE和Chrom浏览器-得到页面滚动条的坐标值
  4. 面试官:前端跨页面通信,你知道哪些方法?
  5. spring mvc框架请求注解解析,内部资源视图解析器
  6. oracle备份和还原
  7. 【安装教程】windows8.1 下安装ubuntu14.04 双系统
  8. JavaScript学习(十六)—实现购物车加减数量,计算总金额
  9. React Native——一次学习,随处编写
  10. matlab里uicontrol的用法,Matlab uicontrol举例
  11. 汽车电子测试相关名词解释
  12. c++排序(CList类库)
  13. 林轩田《机器学习基石》资源汇总(视频+学习笔记+书)
  14. 生物信息学|药物发现中的机器学习技术(2)
  15. 佛说:前生五百次的凝眸,换今生一次的擦肩
  16. OpenCascade学习笔记-创建一个简单的OpenCascade单文档
  17. 白光迈克尔逊干涉仪的仿真
  18. 关于iphone4如何强制降级ios6.1.3
  19. ai智能语音机器人的流程编辑
  20. 前端-HTML思维导图

热门文章

  1. 人脸口罩识别的项目总结
  2. POJ 2491 Scavenger Hunt 解题报告 再次利用map判重
  3. 海尔集团CEO张瑞敏演讲稿:人不成熟的5大特征
  4. 全面解析5种常见悬挂——连杆支柱悬挂
  5. 2021-08-31《内网安全攻防》学习笔记,第二章-域内信息收集(转自PowerLiu)
  6. LeetCode-Python-77. 组合
  7. stm32的rxne和idle中断_stm32 USART_IT_IDLE中断 一帧数据
  8. 电子护照ocr扫描系统
  9. 关于充电电池(AA型和AAA型)
  10. WEB开启防调试模式