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
的行为是否有解释。
答案 0 :(得分:5)
var test = { test: null };
console.log(typeof test['test']);// will be object
您的代码抛出异常,因为您正在读取null的属性,如下所示:
null['test']
答案 1 :(得分:1)
问题是您正在尝试访问test
的元素,但test
是null
而不是数组/对象。因此,以下代码会引发错误: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