Q:
- [20200330] typeof 的原理,與 instanceOf 、 Object.prototype.toString.call() 的區別
- [20200401] 手寫一個快速排序
- [20200401] 0.1 + 0.2 === 0.3 嗎?爲什麼?
- [20200401] 實現一個算法,來完成字符串相加,比如 “111” + ”2222“ = ”2333“
- [20200401] 深度拷貝
A:
- [20200330] typeof 的原理,與 instanceOf 、 Object.prototype.toString.call() 的區別
- typeof
JS在底層存儲變量的時候,會在變量的機器碼的低位1-3位存儲其類型信息
000:對象
010:浮點數
100:字符串
110:布爾
1:整數
對於undefined 和 null 來說,信息存儲有點特殊
null 所有的機器碼都爲0,所以會被認爲是object
undefined用-2^30整數來表示
use: typeof function() {}
能快速檢查undefined,string,number,boolean類型;
當類型爲object,null,array時都會返回object,無法區分
- instanceOf
use:“str” instanceof String
能檢測number, function, object類型
不能檢測number,boolean,string類型
- Object.prototype.toString.call()
use: Object.prototype.toString.call(“str”)
能準確的判斷所有的類型。寫法相對繁瑣
後續可參考資料:簡書