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

js typeof中返回值

在JavaScript中,typeof操作符用于检测一个变量或表达式的类型,并返回一个表示该类型的字符串。以下是typeof操作符可能返回的所有值及其对应的类型:

基本类型

  1. "undefined":当变量已声明但未赋值时。
  2. "boolean":布尔值truefalse
  3. "number":数字,包括整数和浮点数。
  4. "string":字符串类型。
  5. "bigint":大整数类型(ES2020新增)。
  6. "symbol":符号类型(ES6新增)。
  7. "function":函数类型。

特殊类型

  1. "object":对象类型,包括普通对象、数组、null(这是一个历史遗留问题,typeof null会返回"object")。
  2. "object":对于日期对象、正则表达式对象等,也会返回"object"。
  3. "object":对于Map、Set等ES6新增的数据结构,同样返回"object"。

示例代码

代码语言:txt
复制
console.log(typeof undefined); // "undefined"
console.log(typeof true); // "boolean"
console.log(typeof 42); // "number"
console.log(typeof "Hello"); // "string"
console.log(typeof 10n); // "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"
console.log(typeof new Date()); // "object"
console.log(typeof /regex/); // "object"

注意事项

  • typeof对于对象类型的判断比较粗糙,除了函数类型外,其他所有对象类型都会返回"object"。
  • 对于需要更精确判断对象类型的场景,可以使用instanceof操作符或者Object.prototype.toString.call()方法。

解决typeof null返回"object"的问题

由于typeof null返回"object"是一个历史遗留问题,没有直接的解决方法。但可以通过以下方式来判断一个变量是否为null

代码语言:txt
复制
if (variable === null) {
    // variable 是 null
}

或者使用更通用的方法来判断变量是否为对象(排除null):

代码语言:txt
复制
if (typeof variable === "object" && variable !== null) {
    // variable 是一个非 null 的对象
}

通过这些方法,可以更准确地判断变量的类型,避免因typeof null返回"object"而带来的混淆。

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

相关·内容

  • js什么是匿名函数_js函数返回值

    js匿名函数的代码如下: (function(){ // 这里忽略jQuery 所有实现 })(); 半年前初次接触jQuery 的时候,我也像其他人一样很兴奋地想看看源码是什么样的。...因为,我们都知道,计算机中的函数,也类似数学定义中的描述,它是将输入的若干数据,经过代码设定的逻辑操作处理后,返回唯一的输出的一组代码组合块。...例如,我们把上面的例子中,函数的名字去掉,再判断一下他是不是一个函数: 复制代码 代码如下: alert(typeof function(){});// “function” alert(typeof...小括号能把我们的表达式组合分块,并且每一块,也就是每一对小括号,都有一个返回值。这个返回值实际上也就是小括号中表达式的返回值。...所以如果问你那个开篇中的jQuery 代码片段是应用了JS 里的什么特性?那么它只是匿名函数与匿名函数的调用而已。但是,它 隐含了闭包的特性,并且随时可以实现闭包应用。

    7.1K20

    JS中函数的本质,定义、调用,以及函数的参数和返回值

    function fn(){ alert(1); } setTimeout(fn,1000);//此处需要传函数本体 //此处不能加括号,如果加了括号,会立刻调用,而不是等到1秒之后 函数可以作为返回值使用...: 由于js中没有块级作用域,所以依然是处于全局作用域中 都会出现预解析中函数被提前声明 if(true){ function fn1(){ } }else{ function fn2(){...function Person(){ } var obj=new Person(); js中内置的构造函数,常见的有: Object() new Object() Array() new Array...(cyy));//{name: "cyy1", age: 25, tel: 110, addr: "China"} 9、函数 回调函数,如 setTimeout(fn, time); ---- 函数的返回值...return: 表示函数结束 将值返回 什么可以做返回值: 直接return ,返回值是undefined 数字 字符串 :alert() 输出的都是字符串,会默认调用.toString() 方法 布尔值

    17.6K20
    领券