|
實時熱點
JS中,判斷一個值是什么類型有哪些方法?發(fā)表時間:2025-04-26 11:33 在 JavaScript 中,判斷一個值的類型有多種方法,以下是常用的幾種方式及其區(qū)別和適用場景: 1. |
| typeof42; // "number" |
| typeof"hello"; // "string" |
| typeoftrue; // "boolean" |
| typeofundefined; // "undefined" |
| typeofnull; // "object" (注意!) |
| typeof {}; // "object" |
| typeof []; // "object" |
| typeoffunction() {}; // "function" |
instanceof 運算符作用:檢查對象是否為某個構造函數的實例。
特點:
僅適用于對象類型(如 Array、Date 等)。
對基本類型無效(會返回 false)。
無法跨窗口(如 iframe)判斷,因為不同窗口的構造函數不共享。
示例:
javascript[] instanceofArray; // true {} instanceofObject; // true newDate() instanceofDate; // true 42instanceofNumber; // false (基本類型無效)
Object.prototype.toString.call()作用:最準確的類型判斷方法,返回類似 [object Type] 的字符串。
特點:
可區(qū)分所有內置類型(包括 null 和 undefined)。
適用于基本類型和對象類型。
示例:
javascriptObject.prototype.toString.call(42); // "[object Number]" Object.prototype.toString.call("hello"); // "[object String]" Object.prototype.toString.call(null); // "[object Null]" Object.prototype.toString.call([]); // "[object Array]" Object.prototype.toString.call(/regex/); // "[object RegExp]"
Array.isArray()作用:專門判斷是否為數組。
示例:
javascriptArray.isArray([]); // true Array.isArray({}); // false
如 isNaN()、isFinite():
javascriptisNaN(42); // false isFinite(NaN); // false
?.)和 in 操作符用于檢查對象屬性是否存在(間接判斷類型):
javascriptconst obj = { prop: 42 }; "prop"in obj; // true
| 方法 | 適用場景 | 注意事項 |
|---|---|---|
typeof | 基本類型(除 null) | null 返回 "object" |
instanceof | 對象類型(如 Array、Date) | 對基本類型無效 |
Object.prototype.toString.call() | 所有類型(最準確) | 需提取字符串中的類型名 |
Array.isArray() | 專門判斷數組 | 替代 instanceof Array |
javascriptfunctiongetType(value) { returnObject.prototype.toString.call(value) .slice(8, -1) .toLowerCase(); }
getType([]); // "array" getType(null); // "null" getType(/regex/); // "regexp"
根據需求選擇合適的方法,通常推薦優(yōu)先使用 Object.prototype.toString.call() 或特定方法(如 Array.isArray())。