Typeof运算符重新生成一个字符串而不是null

时间:2015-10-21 09:49:15

标签: javascript

我是Js的新手。 现在我有了这段代码

var name = null;
console.log(typeof name);

但结果是一个字符串?这是为什么?为什么不归零?

3 个答案:

答案 0 :(得分:1)

在JavaScript中,null的数据类型实际上是一个对象,而不是实际为null

因此,当你调用typeof时,它将返回一个" undefined" (或" null"),而不是您期望的null值。

您可以在official specifications上阅读有关JavaScript如何处理它的更多信息。

JavaScript值最初表示为标记和值,对象的标记为0,null表示为标准空指针。 这导致typeof为null返回标记0的问题。

因此,此语句将始终传递为true:

 typeof null === 'object';

有一个针对此的建议修复,但它被拒绝,因为它会导致使用此"技巧"的现有代码出现问题。验证空值。

答案 1 :(得分:0)

虽然它返回" null",这纯粹是告诉你它的类型是什么类型的......它实际上并没有给我们一种类型的你测试的类型,有意义吗?

测试任何类型,它会将其作为"字符串","对象"等

答案 2 :(得分:0)

无论您在何处运行代码,似乎都与全局变量有关。由于长期存在永远不会修复的错误,因此将null引用的类型计算为object。

var a = null;
typeof a
// => "object"

但是,在某些环境中,似乎特定变量名称设置为诸如" null"之类的值。或"",意味着它将评估为字符串

name
//=> "null"
typeof name
//=> "string"

要尝试这一点,请继续在stackoverflow上打开一个javascript控制台并输入

name
//=> ""