typeof 操作符可以准确返回哪些类型?对于数组、函数和对象,它的返回值分别是什么?

推荐答案

typeof 操作符可以返回以下几种类型:

  • "undefined":表示未定义的值。
  • "boolean":表示布尔值 (truefalse)。
  • "number":表示数值,包括整数、浮点数、NaNInfinity
  • "string":表示字符串。
  • "symbol":表示 Symbol 类型的值(ES6 新增)。
  • "bigint":表示 BigInt 类型的值(ES2020 新增)。
  • "object":表示对象、数组和 null
  • "function":表示函数。

对于数组、函数和对象,typeof 的返回值分别是:

  • 数组: "object"
  • 函数: "function"
  • 对象: "object"

本题详细解读

typeof 是 JavaScript 中一个用于判断数据类型的操作符。它会返回一个字符串,表示操作数的类型。

常见返回类型:

正如“推荐答案”部分所列,typeof 可以准确地识别 undefinedbooleannumberstringsymbolbigintfunction 这些类型。

特殊情况:

  • null: typeof null 返回 "object",这是一个历史遗留的错误,在 JavaScript 中一直存在。 这也是 JavaScript 设计上的一个缺陷,在判断是否为 null 时,不能单纯依赖 typeof

  • 数组和对象: typeof 无法区分数组和普通对象。 它们都被视为 "object" 类型。 这意味着,如果需要明确区分数组和普通对象,你需要使用其他方法,比如 Array.isArray()

  • 函数: typeof 可以准确识别函数,返回 "function"

代码示例:

-- -------------------- ---- -------
------------------ -----------        -- -----------
------------------ ------             -- ---------
------------------ ----              -- --------
------------------ ---------          -- --------
------------------ ----------        -- --------
------------------ -----            -- --------
------------------ ------            -- --------
------------------ ----              -- --------
------------------ ----              -- --------
------------------ --------------    -- ----------
------------------ --- --------      -- --------

重点:

  • typeof 操作符是 JavaScript 中进行类型判断的一个基础工具,但是对于复杂的数据类型,例如 null,数组,以及普通对象,需要结合其他方式进行判断。
  • 在实际开发中,对于需要精确类型判断的情况,应避免过度依赖 typeof, 尤其是当需要区分数组和普通对象时。instanceofObject.prototype.toString.call() 这些方法可能更合适。
纠错
反馈