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

JavaScript检查对象属性值是否为对象?代码判断结果异常求助

问题排查与解决方法

嘿,我一眼就揪出你代码里的问题啦——你把typeof的用法搞反了!

问题根源

你写的判断条件是el[1] !== typeof 'object',但typeof 'object'其实是在求字符串'object'的类型,结果是"string"。你的判断就变成了「当前属性值 !== "string"」,而你的属性值分别是数字1、数字2和一个对象,它们都不等于字符串"string",所以自然所有结果都返回true。

正确的逻辑应该是先获取属性值的类型,再和'object'比较,也就是typeof el[1] !== 'object'。

额外注意:typeof null的坑

还有个JavaScript历史遗留的小bug要提醒你——typeof null会返回'object'。如果你的属性值可能出现null,想要把null和真正的对象区分开,需要额外加判断条件。

修正后的代码

const opb = { 'e' : 1, '3' : 2, '4' : {'ee':12} }
Object.entries(opb).forEach(el => {
  const value = el[1];
  // 排除对象和null的情况
  const isNotObject = typeof value !== 'object' || value === null;
  console.log(isNotObject, typeof value);
});

运行这段代码后,你会看到前两个属性(数字类型)返回true 'number',第三个属性(对象类型)返回false 'object',完全符合你的预期。

内容的提问来源于stack exchange,提问作者Kevin.a

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:34:21