And*_*vic 7 javascript internet-explorer google-chrome
今天我使用Object.keys收到错误,因为我意外地传递了非对象值,如下所示:
var filter = true;
var filterKeys = Object.keys(filter);
Run Code Online (Sandbox Code Playgroud)
在Chrome中这很好用,但是在IE 11中我得到了异常并且在调试后发现在IE 11中Object.keys抛出异常Object.keys:参数不是Object.
在这种情况下,IE11表现得更好,因为值true确实无效,但chrome返回空数组.Object.keys是ECMAScript标准,如果你看http://www.ecma-international.org/ecma-262/5.1/#sec-15.2.3.14,它说:
所以有人知道为什么谷歌Chrome实现的行为与ECMAScript规范标准不同,因为我一直认为所有现代浏览器都应该以相同的方式实现ECMAScript.
所以有人知道为什么谷歌Chrome实现的行为与ECMAScript不同
这取决于浏览器实现的ECMAScript版本.
在ECMA-262 ed 6(现行标准)中,第一步是:
- 设obj为ToObject(O)
在ES5中,第一步是:
- 如果Type(O)不是Object,则抛出TypeError异常.
因此,您可以说Chrome与第6版(它将原始的true转换为布尔对象)和使用ES5的IE(它会引发TypeError异常)一致,因此两者都符合标准的不同版本.
| 归档时间: |
|
| 查看次数: |
5928 次 |
| 最近记录: |