国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript?—?Null vs. Undefined

tanglijun / 2318人閱讀

JavaScript?—?Null vs. Undefined

初學者往往搞不清楚nullundefined的區別,本文深入剖析nullundefined的異同。

null是啥?

關于null有兩點需要掌握:

null是一個

null是被賦值來的

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

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

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

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

你也可以特意的給一個變量賦值為undefined,不過正常場景下不會這么使用。

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

還有一點,當訪問對象不存在的屬性時,我們會得到undefined

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

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

falsy 值:

false

0 (zero)

“” (empty string)

null

undefined

NaN (Not A Number)

其余所有的值則皆為truthy

另外, JS 語言中有六個原始數據類型,nullundefined是其中兩個原始類型的值。原始數據類型:

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);
// undefined
null !== undefined

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

?nullundefined存在差異的實際應用場景?

廢話那么多,真正能用的地方,譯者就越到一個,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);
// hi
Summary

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

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

nullundefined都是falsy

nullundefined都是原始數據類型,但JS 語言的bug導致typeof null = object

null !== undefined null == undefined

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/92552.html

相關文章

  • JavaScript·隨記 Null vs. Undefined

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

    Tychio 評論0 收藏0
  • javascript數據結構與算法 --- 棧 vs 隊列 vs 鏈表 vs 二叉樹 vs

    摘要:數據結構前言隨著的興起將推向的一個前所未有的高度作為為建立高性能的服務端而創建的運行平臺隨著時間的推移和生態鏈的完善已經不再局部于服務端包括前端后端桌面正如在年提出的任何可以使用來編寫的應用,最終會由編寫雖然人們大多或多或少對筆者的文章有點 數據結構 前言 隨著node的興起, 將javascript推向的一個前所未有的高度, node作為為建立高性能的服務端而創建的js運行平臺隨著時...

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

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

    joyqi 評論0 收藏0
  • javascript -- == vs ===

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

    BothEyes1993 評論0 收藏0
  • 快速掌握JavaScript面試基礎知識(一)

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

    acrazing 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<