You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中typeof运算符除'strings'外均返回undefined问题求助

问题成因

你遇到的问题主要是以下三类新手常见错误导致,可按顺序排查:

  • 拼写错误:JS 是严格大小写敏感的语言,typeof 运算符必须全小写,如果你写成 Typeof、typeOf、typof 这类形式,本质上是访问一个未声明的自定义变量,非严格模式下不会抛出引用错误,会直接返回 undefined,只有字符串场景碰巧被单独解析时才会返回正常结果。
  • 换行触发自动分号插入:typeof 是一元运算符,必须紧跟要检测的值。如果你把 typeof 单独放在一行,部分运行环境会自动在 typeof 后插入分号,相当于 typeof 没有操作数,直接返回 undefined。如果是在函数内把 return 和 typeof 分两行写,JS 会直接在 return 后插入分号,后面的 typeof 代码完全不会执行,函数直接返回 undefined。
  • 保留字命名冲突:虽然 typeof 是 JS 保留关键字,规范不允许作为变量名声明,但非严格模式的低版本运行环境可能支持 var typeof = undefined 这类非法声明,如果你代码中不小心写了类似内容,所有 typeof 调用都会返回 undefined。

解决方法

  • 保证 typeof 全小写,且和要检测的值放在同一行:
    console.log(typeof '测试字符串') // 输出 'string'
    console.log(typeof 123) // 输出 'number'
    console.log(typeof true) // 输出 'boolean'
    
  • 如果要检测的值过长需要换行,用括号包裹检测值,且把 typeof 和左括号放在同一行:
    console.log(typeof(
      超长的变量名或者表达式
    ))
    
  • 在代码第一行添加 'use strict' 开启严格模式,会直接抛出拼写错误、保留字非法赋值等问题,帮你快速定位错误。

内容的提问来源于stack exchange,提问作者Dyloh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:36:06