【发布时间】:2015-11-02 06:33:29
【问题描述】:
今天我在使用 Object.keys 时遇到了错误,因为我不小心像这样传递了非对象值:
var filter = true;
var filterKeys = Object.keys(filter);
在 Chrome 中这很好用,但在 IE 11 中出现异常,调试后发现在 IE 11 中 Object.keys 抛出异常 Object.keys: argument is not an Object。
在这种情况下,IE11 表现得更好,因为值 true 确实无效,但 chrome 返回了空数组。 Object.keys 是 ECMAScript 标准,如果您查看 http://www.ecma-international.org/ecma-262/5.1/#sec-15.2.3.14,它会说:
- 如果 Type(O) 不是 Object,则抛出 TypeError 异常。
那么有谁知道为什么 Google Chrome 实现的行为不像 ECMAScript 规范标准中那样,因为我一直认为所有现代浏览器都应该实现 ECMAScript 以使其行为相同。
【问题讨论】:
标签: javascript google-chrome internet-explorer