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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/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 ...
閱讀 2458·2021-09-28 09:36
閱讀 3597·2021-09-22 15:41
閱讀 4388·2021-09-04 16:45
閱讀 1957·2019-08-30 15:55
閱讀 2847·2019-08-30 13:49
閱讀 825·2019-08-29 16:34
閱讀 2370·2019-08-29 12:57
閱讀 1679·2019-08-26 18:42