成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript?—?Null vs. Undefined

tanglijun / 2346人閱讀

JavaScript?—?Null vs. Undefined

初學(xué)者往往搞不清楚nullundefined的區(qū)別,本文深入剖析nullundefined的異同。

null是啥?

關(guān)于null有兩點(diǎn)需要掌握:

null是一個(gè)

null是被賦值來的

下面是個(gè) Demo, 我們給 a 變量賦值為 null:

let a = null;
console.log(a);
// null
undefined是啥?

undefined通常表示一個(gè)變量單單被聲明過,但是沒有初始化。Demo:

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

你也可以特意的給一個(gè)變量賦值為undefined,不過正常場(chǎng)景下不會(huì)這么使用。

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

還有一點(diǎn),當(dāng)訪問對(duì)象不存在的屬性時(shí),我們會(huì)得到undefined

var d = {};
console.log(d.fake);
// undefined
null & undefined的相同點(diǎn)

在 JS 語言中,有6個(gè)falsy的值,其中nullundefined是六個(gè)falsy值中的兩個(gè)。

falsy 值:

false

0 (zero)

“” (empty string)

null

undefined

NaN (Not A Number)

其余所有的值則皆為truthy。

另外, JS 語言中有六個(gè)原始數(shù)據(jù)類型,nullundefined是其中兩個(gè)原始類型的值。原始數(shù)據(jù)類型:

Boolean

Null

Undefined

Number

String

Symbol

不在上述六種之內(nèi)的就都是引用類型。但是有趣的是,當(dāng)你使用typeof來校驗(yàn) null時(shí),返回的卻是object,可以簡(jiǎn)單理解為這是js 在最初引入的一個(gè) bug。

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

通過上面的介紹,你可能已經(jīng)隱隱約約的感覺到了nullundefined是不同的,但非常相似。所以,null !== undefined,null == undefined。

?nullundefined存在差異的實(shí)際應(yīng)用場(chǎng)景?

廢話那么多,真正能用的地方,譯者就越到一個(gè),es6的默認(rèn)參數(shù)。

let logHi = (str = "hi") => {
  console.log(str);
}
/*默認(rèn)值生效*/
logHi();
// hi

/*正常調(diào)用*/
logHi("bye");
// bye

/*默認(rèn)值生效*/
logHi(undefined);
// hi

/*null 被當(dāng)成有效的值*/
logHi(null);
// null

就上述代碼,大家在和我一同回憶下 es5的默認(rèn)參數(shù)的寫法

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

logHi("bye");
// bye

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

null是被賦值出來的,它用來表示空

undefined通常表示一個(gè)變量被聲明了,但是沒有被初始化

nullundefined都是falsy

nullundefined都是原始數(shù)據(jù)類型,但JS 語言的bug導(dǎo)致typeof null = object

null !== undefined null == undefined

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/92552.html

相關(guān)文章

  • JavaScript·隨記 Null vs. Undefined

    摘要:剛學(xué)了一些的基礎(chǔ)語法,試著用一下。相關(guān)文檔基本語法配合基本使用相同點(diǎn)和都是的基本數(shù)據(jù)類型擴(kuò)展的種基本數(shù)據(jù)類型和都是值擴(kuò)展的種值空字符串不同點(diǎn)可見代表變量有值,值為空且該值是通過變量賦值獲得的代表聲明了變量,但沒有為其賦值。 剛學(xué)了一些 Markdown 的基礎(chǔ)語法,試著用一下。 相關(guān)文檔:Markdown基本語法配合基本使用 相同點(diǎn): null 和 undefined 都是js...

    Tychio 評(píng)論0 收藏0
  • javascript數(shù)據(jù)結(jié)構(gòu)與算法 --- 棧 vs 隊(duì)列 vs 鏈表 vs 二叉樹 vs

    摘要:數(shù)據(jù)結(jié)構(gòu)前言隨著的興起將推向的一個(gè)前所未有的高度作為為建立高性能的服務(wù)端而創(chuàng)建的運(yùn)行平臺(tái)隨著時(shí)間的推移和生態(tài)鏈的完善已經(jīng)不再局部于服務(wù)端包括前端后端桌面正如在年提出的任何可以使用來編寫的應(yīng)用,最終會(huì)由編寫雖然人們大多或多或少對(duì)筆者的文章有點(diǎn) 數(shù)據(jù)結(jié)構(gòu) 前言 隨著node的興起, 將javascript推向的一個(gè)前所未有的高度, node作為為建立高性能的服務(wù)端而創(chuàng)建的js運(yùn)行平臺(tái)隨著時(shí)...

    why_rookie 評(píng)論0 收藏0
  • JavaScript 的 4 種數(shù)組遍歷方法: for VS forEach() VS for/in

    摘要:對(duì)于,除非使用箭頭函數(shù),它的回調(diào)函數(shù)的將會(huì)變化。使用測(cè)試下面的代碼,結(jié)果如下打印打印要點(diǎn)使用的規(guī)則要求所有回調(diào)函數(shù)必須使用箭頭函數(shù)。 譯者按: JS 騷操作。 原文:For vs forEach() vs for/in vs for/of in JavaScript 譯者: Fundebug 本文采用意譯,版權(quán)歸原作者所有 我們有多種方法來遍歷 JavaScript 的數(shù)組或者...

    joyqi 評(píng)論0 收藏0
  • javascript -- == vs ===

    摘要:判斷一個(gè)值是否是,只能用來判斷如果兩個(gè)都是字符串,每個(gè)位置的字符都一樣,那么相等否則不相等。如果一個(gè)是字符串,一個(gè)是數(shù)值,把字符串轉(zhuǎn)換成數(shù)值再進(jìn)行比較。對(duì)象轉(zhuǎn)換成基礎(chǔ)類型,利用它的或者方法。核心內(nèi)置類,會(huì)嘗試先于例外的是,利用的是轉(zhuǎn)換。 javascript-- == vs === 高級(jí)語言層出不窮, 各個(gè)語言雖說思想一致,但仍有各自獨(dú)特的設(shè)計(jì)理念和語法, js有許多容易讓人迷惑的地方...

    BothEyes1993 評(píng)論0 收藏0
  • 快速掌握JavaScript面試基礎(chǔ)知識(shí)(一)

    摘要:根據(jù)調(diào)查,自年一來,是最流行的編程語言。在一個(gè)函數(shù)體中聲明的變量和函數(shù),周圍的作用域內(nèi)無法訪問。也就是說被大括號(hào)包圍起來的區(qū)域聲明的變量外部將不可訪問。一個(gè)常見的誤解是使用聲明的變量,其值不可更改。 譯者按: 總結(jié)了大量JavaScript基本知識(shí)點(diǎn),很有用! 原文: The Definitive JavaScript Handbook for your next developer ...

    acrazing 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<