自学内容网 自学内容网

JavaScript数据类型判断

在 JavaScript 中,可以通过多种方式来判断数据类型,以下是常用的几种方法:


1. typeof 操作符

typeof 用于判断基本数据类型和部分对象类型。

console.log(typeof 123); // "number"
console.log(typeof "hello"); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object" (这是一个已知的历史问题)
console.log(typeof {}); // "object"
console.log(typeof function() {}); // "function"
console.log(typeof Symbol()); // "symbol"

缺点:对 null 和对象类型的区分不够精确。


2. Object.prototype.toString.call()

更精确地判断所有类型,尤其是对象类型。

console.log(Object.prototype.toString.call(123)); // "[object Number]"
console.log(Object.prototype.toString.call("hello")); // "[object String]"
console.log(Object.prototype.toString.call(null)); // "[object Null]"
console.log(Object.prototype.toString.call(undefined)); // "[object Undefined]"
console.log(Object.prototype.toString.call([])); // "[object Array]"
console.log(Object.prototype.toString.call({})); // "[object Object]"
console.log(Object.prototype.toString.call(function() {})); // "[object Function]"
console.log(Object.prototype.toString.call(new Date())); // "[object Date]"

优点:可区分各种对象类型,比如 ArrayDate 等。


3. instanceof 操作符

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

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

注意instanceof 依赖原型链,因此对于跨 iframe 或不同全局作用域的对象可能会失效。


4. Array.isArray()

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

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

5. 自定义类型判断函数

结合 typeofObject.prototype.toString

function getType(value) {
  if (value === null) return "null";
  if (typeof value === "object") {
    return Object.prototype.toString.call(value).slice(8, -1).toLowerCase();
  }
  return typeof value;
}

console.log(getType(123)); // "number"
console.log(getType("hello")); // "string"
console.log(getType([])); // "array"
console.log(getType(null)); // "null"
console.log(getType(new Date())); // "date"

总结

  • 快速判断:使用 typeof
  • 精确区分:使用 Object.prototype.toString.call()
  • 检查实例:使用 instanceof
  • 数组检测:使用 Array.isArray()

根据需求选择合适的方法!


原文地址:https://blog.csdn.net/gklcsdn/article/details/143968398

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