0

我想不通,为什么有些浏览器允许下一个代码,而有些则不允许:

'use strict';
(function() {
  Number = 1;
  toString = 1;
  valueOf = 1;
})();
console.log(Number);
console.log(toString);
console.log(valueOf);
  • Windows 上的 Chrome 52 抛出 toString 和 valueOf,但允许 Number。
  • Linux 上的 Chrome 49 抛出 valueOf,并允许其他人。
  • Firefox 47 允许所有。
  • IE 11 允许数字。
  • Opera 允许编号。

起初,当我在 Chrome 中发现这一点时,我想,这是因为这些“变量”已经被定义为全局对象的属性。但window.hasOwnProperty('toString')返回 false,对于 'valueOf' 也是如此。所以我不知道。

请问有人能解释一下吗?

我问是因为我需要在单元测试中进行测试,全局变量没有被修改,这种行为很难,因为我不知道什么行为是正确的,所以我可以依赖它而不是有一天找到它是固定的。

4

0 回答 0