首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js 获取参数类型

在JavaScript中,获取参数的类型可以使用内置的 typeof 操作符。typeof 可以返回一个表示操作数类型的字符串。以下是一些基本数据类型及其对应的 typeof 返回值:

  • "undefined": 如果变量未定义或者是未初始化的变量
  • "boolean": 如果变量是布尔值
  • "string": 如果变量是字符串
  • "number": 如果变量是数字
  • "bigint": 如果变量是BigInt类型
  • "symbol": 如果变量是Symbol类型
  • "function": 如果变量是一个函数
  • "object": 如果变量是对象或者 null(注意,typeof null 会返回 "object",这是一个历史遗留问题)

对于数组、日期、正则表达式等对象类型,typeof 也会返回 "object",因为它们都是对象的子类。如果需要更精确地区分这些类型,可以使用 Object.prototype.toString.call() 方法。

下面是一些示例代码,展示如何使用 typeofObject.prototype.toString.call() 来获取参数的类型:

代码语言:txt
复制
function getType(value) {
  // 使用 typeof 判断基本类型
  const type = typeof value;
  if (type !== 'object') {
    return type;
  }
  // 对于对象类型,使用 Object.prototype.toString.call 来判断
  return Object.prototype.toString.call(value).slice(8, -1).toLowerCase();
}

console.log(getType(undefined)); // "undefined"
console.log(getType(true)); // "boolean"
console.log(getType("hello")); // "string"
console.log(getType(123)); // "number"
console.log(getType(123n)); // "bigint"
console.log(getType(Symbol('sym'))); // "symbol"
console.log(getType(function() {})); // "function"
console.log(getType(null)); // "null"
console.log(getType([])); // "array"
console.log(getType(new Date())); // "date"
console.log(getType(/regex/)); // "regexp"

在上面的代码中,getType 函数首先使用 typeof 来判断参数是否为基本类型。如果不是,它会使用 Object.prototype.toString.call() 来获取更精确的类型信息,并通过 .slice(8, -1).toLowerCase() 来格式化返回的字符串,以便得到更易读的类型名称。

这种方法的优点是可以准确地区分不同的对象类型,尤其是当需要区分数组、日期、正则表达式等复杂对象时。

应用场景包括:

  • 在编写可接收任意类型参数的函数时,需要根据参数类型执行不同的逻辑。
  • 在进行类型检查时,确保传入的数据符合预期的类型。
  • 在调试代码时,快速确定变量的类型。

如果你遇到了问题,比如 typeof 返回了意外的结果(例如 typeof null 返回 "object"),那么可以使用上面提到的 getType 函数来获取更准确的类型信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Js获取数据类型

    Js获取数据类型 JavaScript有着七种基本类型String、Number、Boolean、Null、Undefined、Symbol、Object,前六种为基本数据类型,Object为引用类型。...typeof typeof(operand)或typeof operand,operand是一个表示对象或原始值的表达式,其类型将被返回。...对象的类型标签是 0。由于 null 代表的是空指针(大多数平台下值为 0x00),因此,null 的类型标签是 0,typeof null 也因此返回 "object"。...在Js中,一切都是对象,至少被视为一个对象,能够直接使用字面量声明的基本数据类型,虽然并不是直接的对象类型,但是在基本数据类型的变量调用方法的时候,会出现一个临时的包装对象,从而能够调用其构造函数的原型的方法...用以判断类型。

    9.4K40
    领券