我有这段代码:
if(typeof x == 'object')
return "{"+Object.keys(x)+"}";
结果是(Chrome):
Uncaught TypeError: Object.keys called on non-object
有谁能告诉我这里发生了什么?顺便说一下:Firefox也是如此。
ps:不知道对象是什么。 Firefox调试失败了我。答案 0 :(得分:7)
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
typeof
(http://www.ecma-international.org/ecma-262/5.1/#sec-8.2)
typeof null
:http://www.ecma-international.org/ecma-262/5.1/#sec-11.4.3
该表显示"object"
实际上是null
事实上,typeof x === "object"
满足TypeError
并触发{{1}}例外