我有这个代码:
if(typeof x == 'object')
return "{"+Object.keys(x)+"}";
结果是(Chrome):
Uncaught TypeError: Object.keys called on non-object
谁能告诉我这里发生了什么?顺便说一句:Firefox 也是如此。
ps:不知道对象是什么。Firefox 调试失败了。
我有这个代码:
if(typeof x == 'object')
return "{"+Object.keys(x)+"}";
结果是(Chrome):
Uncaught TypeError: Object.keys called on non-object
谁能告诉我这里发生了什么?顺便说一句:Firefox 也是如此。
ps:不知道对象是什么。Firefox 调试失败了。
x
最有可能null
(这是一个对象)。您应该明确检查if(typeof x === 'object' && x !== null)
浏览规范(解释逻辑):
Object.keys
: http: //www.ecma-international.org/ecma-262/5.1/#sec-15.2.3.14读取
如果 Type(O) 不是 Object,则抛出 TypeError 异常。
这Type
是Null
为null
(http://www.ecma-international.org/ecma-262/5.1/#sec-8.2)
typeof
: http: //www.ecma-international.org/ecma-262/5.1/#sec-11.4.3
该表显示typeof null
实际上是"object"
所以实际上null
满足typeof x === "object"
并触发TypeError
异常