JavaScript中的typeof

typeof 是 JavaScript 中的一个运算符,用于返回操作数的数据类型。它通常用于检查变量的类型或确定表达式的类型。typeof 返回一个表示类型的字符串值。以下是 typeof 可能返回的几种类型:

  • "undefined": 如果操作数未定义。
  • "boolean": 如果操作数是布尔值(true 或 false)。
  • "string": 如果操作数是字符串。
  • "number": 如果操作数是数字(包括整数和浮点数)。
  • "bigint": 如果操作数是 BigInt 类型(ES2020 引入)。
  • "object": 如果操作数是对象、数组或 null(注意:null 也被认为是对象,这是 JavaScript 的历史遗留问题)。
  • "function": 如果操作数是一个函数。
  • "symbol": 如果操作数是 Symbol 类型(ES6 引入)。

使用示例
 

console.log(typeof undefined); // "undefined"
console.log(typeof true);      // "boolean"
console.log(typeof "hello");   // "string"
console.log(typeof 42);        // "number"
console.log(typeof 123n);      // "bigint"
console.log(typeof {});        // "object"
console.log(typeof null);      // "object" (这是一个历史遗留问题)
console.log(typeof function(){}); // "function"
console.log(typeof Symbol());  // "symbol"

注意事项

  • null 的类型:如上所述,typeof null 返回 "object",这实际上是一个错误,源于 JavaScript 的早期版本中的一个设计缺陷。

  • 检测对象类型:对于更精确的对象类型检测(例如区分普通对象和数组),您可能需要使用其他方法,比如 Array.isArray() 或者 Object.prototype.toString.call() 方法。

    console.log(Array.isArray([])); // true
    console.log(Object.prototype.toString.call([]) === '[object Array]'); // true

  • 检测函数:虽然 typeof 可以区分函数和其他对象,但在某些环境中(如浏览器环境),您可能会遇到宿主对象,它们的行为可能与预期不同。因此,在严格模式下或当您不确定时,可以考虑使用其他方式来检测函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值