Array.prototype.find()与IE11

时间:2019-03-13 09:34:10

标签: javascript cross-browser internet-explorer-11

https://caniuse.com/#search=find声明IE11不支持find()方法。

与此同时,我正在IE11中测试此find()方法,但没有发现任何错误行为的痕迹。

我也在IE11中测试了代码

function isPrime(element, index, array) {
  var start = 2;
  while (start <= Math.sqrt(element)) {
    if (element % start++ < 1) return false;
  }
  return (element > 1);
}

console.log([4, 5, 8, 12].find(isPrime)); // 5

来自 SO: Array.prototype.find() is undefined

是的,在IE11中,它返回预期的5而不是TypeError的结果:undefined不是一个函数,如SO: Array.prototype.find() is undefined在2014年所述。

所以...我是否丢失了某些东西,而IE11确实无法与Array.prototype.find或前一段时间进行的IE11的最新更新一起正常工作(但迟于2014年讨论了上述SO问题) )成为支持这种方法?

如果说IE11不支持Array.prototype.find,https://caniuse.com/#search=find是否正确?有证据吗?

谢谢。

UPD:这是我的IE11的屏幕: enter image description here

2 个答案:

答案 0 :(得分:5)

您阅读的所有内容都是正确的。您的测试有缺陷。也许您包括一个Polyfill,它在IE11中添加了该方法。

It does not work in IE11

答案 1 :(得分:2)

您可以尝试执行以下步骤进行验证:

  1. 在IE中打开空白标签。
  2. 在开发工具中打开控制台。
  3. 输入以下代码:[1,2,3].find(function(n) { !!n; })
    • 如果上面的代码抛出错误(应该出现 ),则说明您使用的是polyfill。因此,您的代码不会中断。
    • 如果有效,唯一的解释是某种方式的某些更新已添加了其定义。但这不太可能,因为微软已经停止了对此的支持。

这就是我得到的:

enter image description here