JavaScript — Null vs. Undefined
初学者往往搞不清楚null和undefined的区别,本文深入剖析null和undefined的异同。
null是啥?关于null有两点需要掌握:
null是一个空值
null是被赋值来的
下面是个 Demo, 我们给 a 变量赋值为 null:
let a = null; console.log(a); // nullundefined是啥?
undefined通常表示一个变量单单被声明过,但是没有初始化。Demo:
let b; console.log(b); // undefined
你也可以特意的给一个变量赋值为undefined,不过正常场景下不会这么使用。
let c = undefined; console.log(c); // undefined
还有一点,当访问对象不存在的属性时,我们会得到undefined
var d = {}; console.log(d.fake); // undefinednull & undefined的相同点
在 JS 语言中,有6个falsy的值,其中null和undefined是六个falsy值中的两个。
falsy 值:
false
0 (zero)
“” (empty string)
null
undefined
NaN (Not A Number)
其余所有的值则皆为truthy。
另外, JS 语言中有六个原始数据类型,null和undefined是其中两个原始类型的值。原始数据类型:
Boolean
Null
Undefined
Number
String
Symbol
不在上述六种之内的就都是引用类型。但是有趣的是,当你使用typeof来校验 null时,返回的却是object,可以简单理解为这是js 在最初引入的一个 bug。
let a = null; let b; console.log(typeof a); // object console.log(typeof b); // undefinednull !== undefined
通过上面的介绍,你可能已经隐隐约约的感觉到了null和undefined是不同的,但非常相似。所以,null !== undefined,null == undefined。
?null和undefined存在差异的实际应用场景?废话那么多,真正能用的地方,译者就越到一个,es6的默认参数。
let logHi = (str = "hi") => { console.log(str); } /*默认值生效*/ logHi(); // hi /*正常调用*/ logHi("bye"); // bye /*默认值生效*/ logHi(undefined); // hi /*null 被当成有效的值*/ logHi(null); // null
就上述代码,大家在和我一同回忆下 es5的默认参数的写法
let logHi = (str) => { str = str || "hi"; console.log(str); } logHi("bye"); // bye logHi() // hi logHi(undefined); // hi logHi(null); // hiSummary
null是被赋值出来的,它用来表示空
undefined通常表示一个变量被声明了,但是没有被初始化
null和undefined都是falsy值
null和undefined都是原始数据类型,但JS 语言的bug导致typeof null = object
null !== undefined null == undefined
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/92552.html
摘要:刚学了一些的基础语法,试着用一下。相关文档基本语法配合基本使用相同点和都是的基本数据类型扩展的种基本数据类型和都是值扩展的种值空字符串不同点可见代表变量有值,值为空且该值是通过变量赋值获得的代表声明了变量,但没有为其赋值。 刚学了一些 Markdown 的基础语法,试着用一下。 相关文档:Markdown基本语法配合基本使用 相同点: null 和 undefined 都是js...
摘要:数据结构前言随着的兴起将推向的一个前所未有的高度作为为建立高性能的服务端而创建的运行平台随着时间的推移和生态链的完善已经不再局部于服务端包括前端后端桌面正如在年提出的任何可以使用来编写的应用,最终会由编写虽然人们大多或多或少对笔者的文章有点 数据结构 前言 随着node的兴起, 将javascript推向的一个前所未有的高度, node作为为建立高性能的服务端而创建的js运行平台随着时...
摘要:对于,除非使用箭头函数,它的回调函数的将会变化。使用测试下面的代码,结果如下打印打印要点使用的规则要求所有回调函数必须使用箭头函数。 译者按: JS 骚操作。 原文:For vs forEach() vs for/in vs for/of in JavaScript 译者: Fundebug 本文采用意译,版权归原作者所有 我们有多种方法来遍历 JavaScript 的数组或者...
摘要:判断一个值是否是,只能用来判断如果两个都是字符串,每个位置的字符都一样,那么相等否则不相等。如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。对象转换成基础类型,利用它的或者方法。核心内置类,会尝试先于例外的是,利用的是转换。 javascript-- == vs === 高级语言层出不穷, 各个语言虽说思想一致,但仍有各自独特的设计理念和语法, js有许多容易让人迷惑的地方...
摘要:根据调查,自年一来,是最流行的编程语言。在一个函数体中声明的变量和函数,周围的作用域内无法访问。也就是说被大括号包围起来的区域声明的变量外部将不可访问。一个常见的误解是使用声明的变量,其值不可更改。 译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next developer ...
阅读 2421·2021-09-28 09:36
阅读 3554·2021-09-22 15:41
阅读 4324·2021-09-04 16:45
阅读 1757·2019-08-30 15:55
阅读 2820·2019-08-30 13:49
阅读 771·2019-08-29 16:34
阅读 2330·2019-08-29 12:57
阅读 1646·2019-08-26 18:42