2

javascriptstypeof表达式是否检查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

4 回答 4

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

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

null['test']
于 2013-07-17T13:34:35.057 回答
1

问题是您正在尝试访问 的元素test,但test它是null而不是数组/对象。所以下面的代码会抛出一个错误:test['test'].

如果你直接通过typeof它会很好null。例如,使用 node.js 控制台:

> typeof null
'object'
于 2013-07-17T13:35:29.563 回答
0

您可以尝试测试为

typeof (test && test['test']) 

这样你就可以避免 TypeError

于 2013-07-17T13:37:07.050 回答
0

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

你应该只是做typeof test而不是typeof test['test'],我不确定你为什么要以后一种方式做。

于 2013-07-17T13:35:39.830 回答