JavaScript 是一種弱類型語言,開發者經常需要判斷變數的數據類型。本文介紹了 typeof、instanceof、Object.prototype.toString.call 等常用的判斷方法,並討論了 typeof null 返回 object 的歷史原因。此外,還涵蓋瞭如何判斷箭頭函數、... ...
由於JS是弱類型語言,判斷一個變數的數據類型是一個很常見的需求。
下麵介紹一些常用的判斷方法:
typeof操作符
typeof
可以用來判斷除了``null的基本數據類型和
function,其它引用數據類型都會返回
object`。
console.log(typeof "Hello"); // "string"
console.log(typeof 42); // "number"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof function(){}); // "function"
console.log(typeof null); // "object" (這是一個歷史遺留的bug)
console.log(typeof []); // "object"
為什麼typeof null會返回object ?
在JS的最初版本中,使用32位二進位表示棧中的變數,二進位的前三位為類型標識tag,當前三位都是0時,表示object類型。但是null被設計為32位二進位都是0,因此會被錯誤地識別為object類型。
由於這個錯誤影響範圍很大,後期並沒有被修複。