帶你讀書之“紅寶書”:第三章 語(yǔ)法基礎(chǔ)(中)之 數(shù)據(jù)類型前部分

「這是我參與2022首次更文挑戰(zhàn)的第5天,活動(dòng)詳情查看:2022首次更文挑戰(zhàn)

寫在前頭

大多數(shù)小伙伴看技術(shù)書籍都會(huì)用“啃”來(lái)描述讀書的直觀感受,當(dāng)然我也是一個(gè)前端小白,白的透明那種,但是我在讀技術(shù)書籍感覺到“啃”的時(shí)候,我希望把我啃紅寶書第四版的過(guò)程的想法,總結(jié)帶給大家,以供后來(lái)者能夠更快上手。

注: 本文由于作者水平原因,如有錯(cuò)誤之處,懇請(qǐng)大家指正,另外隨著學(xué)習(xí)的深入,體會(huì)的加深,我會(huì)不斷回來(lái)更新,修改這類文章。

思維導(dǎo)圖

image.png

脈絡(luò)

這小節(jié)就是介紹了3.4數(shù)據(jù)類型 中的概述,typeof操作符,undefined數(shù)據(jù)類型。

3.4數(shù)據(jù)類型

image.png

概述

image.png

一、 簡(jiǎn)單數(shù)據(jù)類型

別名:原始類型

一共有6種,分別是Undefined、Null、Boolean、Number、String 和 Symbol。

復(fù)雜數(shù)據(jù)類型

Object(對(duì)象) 簡(jiǎn)單來(lái)說(shuō)對(duì)象包含了許多屬性,方法。是一共集合

用法:JavaScript中數(shù)據(jù)類型是“活”的,一種數(shù)據(jù)類型可以當(dāng)其他的數(shù)據(jù)類型使用。所以使用更加隨意。

3.4.1. typeof 操作符

image.png
  1. 確定任意變量的數(shù)據(jù)類型
    在確定6大變量數(shù)據(jù)類型時(shí)首先得知道這6個(gè)代表什么。
    書中已經(jīng)寫到6個(gè)數(shù)據(jù)類型的表示含義了,就不贅述。

使用typeof就是在typeof后面直接加變量名。這樣返回的值就是該變量對(duì)應(yīng)的數(shù)據(jù)類型。

const age = 100;

console.log(typeof age); // 輸出的是Number
  1. 區(qū)分函數(shù)和其他對(duì)象

函數(shù)其實(shí)就是一種特殊的對(duì)象,他有著直接獨(dú)特的屬性。所以必須得和對(duì)象區(qū)分開,函數(shù)不是數(shù)據(jù)類型!

3.4.2Undefined類型

image.png
  1. 只有一個(gè)值,初始化默認(rèn)賦值

就是在聲明一個(gè)變量時(shí),沒有對(duì)變量進(jìn)行賦值,默認(rèn)這個(gè)變量的值就是undefined。

var age;
var age; // 不會(huì)報(bào)錯(cuò)
  1. 字面值undefined

作用:就是表明這個(gè)變量沒有賦值,是聲明了,但是沒有賦值的。

目的:在之前是沒有undefined這個(gè)數(shù)據(jù)類型的,但是為了和null空對(duì)象指針做出區(qū)別。才衍生出來(lái)了undefined這個(gè)數(shù)據(jù)類型變量。

  1. 包含 undefined 值的變量跟未定義變量的區(qū)別

①console.log

在聲明了變量使用console.log會(huì)輸出undefined,但是在為聲明就使用console.log就會(huì)報(bào)錯(cuò),說(shuō)明這個(gè)變量未聲明。

②typeof

推薦初始化變量理由 :核心是為了使用typeof來(lái)區(qū)別一個(gè)變量是否已經(jīng)聲明。

原因:因?yàn)閠ypeof操作符對(duì)未聲明的變量和已經(jīng)聲明但是沒有賦值的變量返回的值都是一樣的undefined。
那么這樣就無(wú)法通過(guò)typeof來(lái)區(qū)別。所以在使用typeof之前就得讓他們不一樣,那么思考一下怎么不一樣,對(duì)了,給聲明的變量賦值,這樣typeof之后返回的值就不再是undefined了,一個(gè)結(jié)果是undefined,一個(gè)結(jié)果不是,自然我們就可以知道變量是否已經(jīng)聲明。

返回值的本質(zhì)區(qū)別

聲明變量未賦值和未聲明變量雖然typeof都是返回的undefined。邏輯上講這是對(duì)的,因?yàn)殡m然嚴(yán)格來(lái)講,這兩個(gè)變量存在根本性差異,但它們都無(wú)法執(zhí)行實(shí)際操作。(書中原話)

④delete

書中原話:對(duì)未聲明的變量調(diào)用 delete 也不會(huì)報(bào)錯(cuò),但這個(gè)操作沒什么用,實(shí)際上在嚴(yán)格模式下會(huì)拋出錯(cuò)誤。

⑤try-catch區(qū)別未聲明,未初始化

要區(qū)別一個(gè)值是未聲明還是未初始化,可以使用 try-catch,例如:

if (typeof age == 'undefined') {

    try {

        // 未初始化

        console.log(age);

    } catch (error) {

    console.error('age is undeclared.');

        }

}

⑥if檢測(cè)undefined假值

undefined是一個(gè)假值,什么是假值,也就是說(shuō)通過(guò)數(shù)據(jù)類型轉(zhuǎn)換之后,會(huì)轉(zhuǎn)換為false。既然可以轉(zhuǎn)換為布爾值false,那么我們自然就可以通過(guò)條件判斷語(yǔ)句該判斷他是否為一個(gè)假值,進(jìn)而來(lái)判斷他是否為undefined。

注意: 只有判斷undefined其實(shí)是不嚴(yán)謹(jǐn)?shù)?,因?yàn)橛屑僦档那闆r很多。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容