我有这个代码:
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异常