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

js typeof 类型

typeof 是 JavaScript 中的一个一元运算符,用于检测一个变量或表达式的类型。它会返回一个字符串,表示未经计算的操作数的数据类型。

基本用法

代码语言:txt
复制
typeof operand

返回值

typeof 运算符会返回以下字符串之一:

  • "undefined": 如果操作数未定义。
  • "boolean": 如果操作数是布尔值。
  • "number": 如果操作数是数字。
  • "string": 如果操作数是字符串。
  • "bigint": 如果操作数是 BigInt 类型(ES2020 引入)。
  • "symbol": 如果操作数是 Symbol 类型(ES6 引入)。
  • "function": 如果操作数是函数。
  • "object": 如果操作数是对象或 null(这是一个历史遗留问题,typeof null 会返回 "object",实际上 null 是一个基本数据类型)。

示例

代码语言:txt
复制
console.log(typeof undefined); // "undefined"
console.log(typeof true); // "boolean"
console.log(typeof 42); // "number"
console.log(typeof "Hello"); // "string"
console.log(typeof BigInt(9007199254740991)); // "bigint"
console.log(typeof Symbol("sym")); // "symbol"
console.log(typeof function() {}); // "function"
console.log(typeof null); // "object"(注意这是一个历史遗留问题)
console.log(typeof {}); // "object"
console.log(typeof []); // "object"(数组也是对象)

注意事项

  1. typeof 对于基本数据类型(除了 null)的检测是准确的,但对于引用数据类型(如对象、数组、日期等)都会返回 "object",因此它不能准确地区分这些类型。
  2. 对于 nulltypeof 返回 "object",这是一个已知的历史遗留问题。如果需要准确检测 null,可以使用严格相等运算符(===)。
  3. 对于函数,typeof 返回 "function",这是一个特例,因为函数在 JavaScript 中实际上是对象的一种特殊类型。

应用场景

  • 在编写可接收多种类型参数的函数时,可以使用 typeof 进行类型检查,以确保参数类型正确。
  • 在调试代码时,可以使用 typeof 来检查变量的类型,以帮助定位问题。

解决 typeof 的局限性

由于 typeof 对于引用数据类型的检测不够准确,可以使用其他方法来弥补这一不足,例如:

  • 使用 instanceof 运算符来检测对象的具体类型(如 array instanceof Array)。
  • 使用 Object.prototype.toString.call() 方法来获取对象的内部 [[Class]] 属性,从而判断对象的具体类型(如 Object.prototype.toString.call([]) === "[object Array]")。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

js确定数据类型typeof与instanceof

js高级程序设计 1....确定数据的类型 typeof 因为ECMAScript 的类型系系统是松散的,所以需要一种手段来确定任意变量的数据类型.typeOf 这个操作符 就是为此而生的. typeof 最适合用来判断一个变量是否为原始类型...两者的区别 typeof 和 instanceof 都是用来判断数据类型的方法,但它们有以下区别: typeof 会返回一个变量的基本类型,例如 ‘number’, ‘string’, ‘boolean...typeof 主要用来判断基础数据类型,instanceof 则是用来判断引用数据类型。...typeof 是根据数据在存储单元中的类型标签来判断数据的类型,instanceof 则是根据函数的 prototype 属性值是否存在于对象的原型链上来判断数据的类型。

7510
  • js typeof和instanceof 区别

    typeof一般是用来判断简单数据类型的,对一个值使用 typeof 操作符会返回下列字符串之一: “undefined”: 表示值未定义 “boolean”: 表示值为布尔值 “number”:...{}; console.log(typeof fn); // "function" instanceof typeof ([]); // "object" typeof ({}); // "object..." typeof (new String("1")); // "object" 从上面的例子可以看到,typeof的弊端就是会把复杂数据类型都解释为"object",所以对复杂数据类型的判断就不能用...typeof。...instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性,主要是用来判断复杂数据类型,返回布尔值,表示是否是某种类型(用于判断一个变量是否属于某个对象的实例

    1.6K20

    前端学习(27)~js学习(五): typeof和数据类型转换

    通常有三种形式的类型转换: 转换为字符串类型 转换为数字型 转换为布尔型 typeof 运算符 typeof()表示“获取变量的数据类型”,返回的是小写,语法为:(两种写法都可以) /.../ 写法1 typeof 变量; // 写法2 typeof(变量); typeof 这个运算符的返回结果就是变量的类型。...返回结果: typeof 的代码写法 返回结果 typeof 数字 number typeof 字符串 string typeof 布尔型 boolean typeof 对象 object typeof...举例: var a = '666'; var b = +a; console.log(typeof a); // 打印结果:string。说明 a 的数据类型保持不变。...console.log(a); // 打印结果:666 console.log(typeof b); // 打印结果:number。说明 b 的数据类型发生了变化。

    1.2K20

    JavaScript中的typeof操作符 类型转换

    HTML5学堂:JavaScript是弱变量类型的语言,有些时候我们需要知道变量的数据类型,并且需要进行数据类型的转换,我们通过这篇文章来学习一下如何获取变量的数据类型,以及数字和字符串如何相互转换。...typeof操作符 由于JavaScript是弱数据类型的语言,因此需要有一种方法检测变量的数据类型,这时我们可以用typeof来检测变量的数据类型。...(str)); // "string" console.log(typeof(num)); // "number" console.log(typeof(obj)); // "object..." console.log(typeof(blank)); // "object" console.log(typeof(a)); // "undefined" console.log(typeof...我们还可以使用转型函数String(),这个函数能够将任何类型的值转换成字符串。

    1.2K60

    TypeScript系列教程九《类型转换》-- keyof和typeof 操作

    类型转换是TS最好玩也是语言的灵魂,想玩好需要熟练各种手段和工具,下面一一介绍类型转换的一些常用手段。...string]: boolean }; type M = keyof Mapish; //type M = string | number typeof 操作 ---- 之前JS早就存在typeof,typeof...可以获取对象类型 // Prints "string" console.log(typeof "Hello world"); TS可以根据typeof 根据上下文推断出类型: ?...&nsbp; typeof对于类型不是很有用,但与其他类型运算符结合使用,可以使用typeof方便地表示许多模式。例如,让我们从查看预定义的类型ReturnType开始。...P = { //x: number; //y: number; //} 类型检测 TS会协助检测typeof 错误 function func1(params:string) {

    1.8K21

    JS:类型、类型转换

    有不少人认为:JavaScript 没有类型! ? ? 正解是:JavaScript 中的变量没有类型,但值有类型。变量可以随时持有任何类型的值。 1. 值与类型 ?...使用 typeof 运算符即可查看值的类型。 ? 特别注意:typeof null == "object",这已被设计和维护 JavaScript 的委员会 T39 认定是一个错误。...类型转换基本规则 ? 在很多 JavaScript 书籍中强制类型转换被说成是危险、晦涩和糟糕的设计。但对于不懂的地方我们应该迎难而上,知其然并且知其所以然,不会因为种种传言就退避三舍。 ? ?...“显式”强制类型转换 “显式” 是指那些意图较明显的方式... a. 转换为 Boolean: Boolean(...)(不带 new); !...下面以一道 JS 面试题 结束本文 题目: 实现一个函数,运算结果可以满足如下预期结果: add(1)(2) // 3 add(1, 2, 3)(10) // 16 add(1)(2)(3)(4)(5)

    7.7K40
    领券