自学内容网 自学内容网

js 判断变量类型的几种方法

1. typeof

用于判断基本数据类型。

console.log(typeof 123);        // 输出: "number"
console.log(typeof "hello");    // 输出: "string"
console.log(typeof true);       // 输出: "boolean"
console.log(typeof undefined);  // 输出: "undefined"
console.log(typeof Symbol());   // 输出: "symbol"
console.log(typeof {});         // 输出: "object"
console.log(typeof null);       // 输出: "object" (注意,这是 JavaScript 的一个历史遗留问题)
console.log(typeof function(){}); // 输出: "function"

2. instanceof

用于判断某个对象是否是某个构造函数的实例。

console.log([] instanceof Array);          // 输出: true
console.log({} instanceof Object);         // 输出: true
console.log(new Date() instanceof Date);   // 输出: true
console.log(function(){} instanceof Function); // 输出: true

3. constructor

通过对象的 constructor 属性来判断类型。

console.log([].constructor === Array);          // 输出: true
console.log({}.constructor === Object);         // 输出: true
console.log(new Date().constructor === Date);   // 输出: true
console.log(function(){}.constructor === Function); // 输出: true

4. Object.prototype.toString.call()

这是判断复杂类型和内置对象类型的更可靠方法。

console.log(Object.prototype.toString.call([]));           // 输出: "[object Array]"
console.log(Object.prototype.toString.call({}));           // 输出: "[object Object]"
console.log(Object.prototype.toString.call(new Date()));   // 输出: "[object Date]"
console.log(Object.prototype.toString.call(null));         // 输出: "[object Null]"
console.log(Object.prototype.toString.call(undefined));    // 输出: "[object Undefined]"
console.log(Object.prototype.toString.call(/regex/));      // 输出: "[object RegExp]"
console.log(Object.prototype.toString.call(new Map()));    // 输出: "[object Map]"

5. Array.isArray()

专门用来判断是否是数组。

console.log(Array.isArray([]));    // 输出: true
console.log(Array.isArray({}));    // 输出: false

6. isNaN()

用于判断是否为 NaN(不是数字)。但原生的 isNaN() 对非数字的输入会返回 true,建议使用 Number.isNaN()。

console.log(isNaN(NaN));           // 输出: true
console.log(isNaN("hello"));       // 输出: true (不准确)
console.log(Number.isNaN(NaN));    // 输出: true
console.log(Number.isNaN("hello")); // 输出: false (准确)

7. isFinite()

判断是否为有限数值。

console.log(isFinite(123));        // 输出: true
console.log(isFinite(Infinity));   // 输出: false
console.log(isFinite("123"));      // 输出: true (会先转换为数字)
console.log(Number.isFinite(123)); // 输出: true (更推荐用这个)
console.log(Number.isFinite("123")); // 输出: false (不进行隐式转换)

原文地址:https://blog.csdn.net/Misnice/article/details/142876936

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!