Typeof 运算符返回一个字符串而不是 null
2015-10-21
71
我是 Js 新手。 现在我有这个代码
var name = null;
console.log(typeof name);
但是结果是一个字符串?这是为什么?为什么不是 null?
3个回答
在 JavaScript 中,
null
的数据类型实际上是一个对象,而不是真正的
null
。
因此,当您调用 typeof 时,它将返回一个字符串“undefined”(或“null”),而不是您期望的
null
值。
您可以在 官方规范 上阅读有关 JavaScript 如何处理它的更多信息。
JavaScript 值最初表示为一个标签和一个值,对象的标记为 0,而 null 表示为标准空指针。 这导致 typeof 返回标记为空值的 0 的问题。
因此,此语句将始终为真:
typeof null === 'object';
曾有人提出修复此问题,但该修复被拒绝,因为它会导致使用此“技巧”验证空值的现有代码出现问题。
Sk93
2015-10-21
尽管它返回“null”,但这纯粹是 typeof 通知您其类型的方式……它实际上并没有返回您测试的类型,这有意义吗?
测试任何类型,它都会将其作为“字符串”、“对象”等返回
An0nC0d3r
2015-10-21
无论您在何处运行代码,它似乎都与全局变量有关。由于一个长期存在的错误,永远无法修复,空引用的类型被评估为对象。
var a = null;
typeof a
// => "object"
但是,在某些环境中,似乎特定变量名称被设置为诸如“null”或“”之类的值,这意味着它将被评估为字符串
name
//=> "null"
typeof name
//=> "string"
要尝试这一点,请继续在 stackoverflow 上打开 javascript 控制台并输入
name
//=> ""
Jonah Williams
2015-10-21