JavaScript的typeof函数是否检查null

时间:2013-07-17 13:32:31

标签: javascript

javascripts typeof表达式是否检查null?

var test = {};
console.log(typeof test['test']);//"undefined"

var test = null;
console.log(typeof test['test']);//TypeError: test is null

显然,但为什么错误,如果typeof null是一个对象?

编辑:
我知道如何避免类型错误,null没有属性,但我想知道typeof的行为是否有解释。

4 个答案:

答案 0 :(得分:5)

var test = { test: null };
console.log(typeof test['test']);// will be object

您的代码抛出异常,因为您正在读取null的属性,如下所示:

null['test']

答案 1 :(得分:1)

问题是您正在尝试访问test的元素,但testnull而不是数组/对象。因此,以下代码会引发错误:test['test']

typeof如果直接传递null,则可以正常工作。例如,使用node.js控制台:

> typeof null
'object'

答案 2 :(得分:0)

你要求它读取null的属性“test”,这没有任何意义,错误基本上是告诉你“test is null - >无法读取属性”test“of null”。

你应该只是做typeof test而不是typeof test['test'],我不确定你为什么要这样做。

答案 3 :(得分:0)

您可以尝试将其作为

进行测试
typeof (test && test['test']) 

这样可以避免TypeError