2020-03-04

第一次筆記匯總

// 基本數據類型:number string boolean null undefined symbol BigInt

?// 引用數據類型:object(普通對象、數組對象、正則對象、日期對象...) function /

* * JS中的數據類型檢測:

?* + tyepof [value] 檢測數據類型的運算符

?*??+ [example] instanceof [class] 檢測某一個實例是否屬于這個類

?* + [example].constructor===[class] 檢測實例和類關系的,從而檢測數據類型

?* + Object.prototype.toString.call([value]) 檢測數據類型 * * typeof的細節點:

?* + typeof 檢測的結果首先是一個字符串,字符串中包含了對應的數據類型(例如:"number"、"string"、"boolean"、"undefined"、"object"、"function"、"symbol"、"bigint")

?* + 特殊的檢測結果:

?* + NaN / Infinity 都是數字類型的,檢測出來的結果是 "number"

?* + typeof null 的結果是 "object"(這個是瀏覽器的BUG:所有的值在計算中都已二進制編碼存儲,瀏覽器中把前三位是000的當做對象,而null的二進制前三位就是000,所以被識別為對象,但是它不是對象,它是空對象指針,是基本類型值)

?* + typeof 普通對象/數組對象/正則對象... 結果都是"object",這樣就無法基于typeof區分是普通對象還是數組對象等了

*/// =>百度和騰訊的面試題

// console.log(typeof []); //=>"object"http:// console.log(typeof typeof typeof []); //=>"string" 由于typeof返回的結果永遠是一個字符串(字符串中包含了對應的類型),所以連續出現兩個及兩個以上typeof檢測的時候,最后結果都是 "string"

// 已知有一個變量x,但是我們無法確認其數據類型,我們需要有一個判斷操作:當x的類型是對象的時候(什么對象都可以),則處理對應的事情

// if (typeof x == "object") { //=>null檢測結果也會是"object",所以結果是"object"不一定是對象,還可能是null呢// // ...// }

//衍生出:if (x != null && typeof x == "object")

?//瀏覽器的底層渲染機制

####數據類型的區別:

基本數據類型是按值操作,值存儲在棧內存中;引用數據類型是按照堆內存的地址來操作,我們需要把對象的鍵值對存儲在堆內存中,我們操作的是堆內存的引用地址;

判斷兩個值是否相等
常用的判斷
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容