Array.prototype.find () против IE11 - PullRequest
0 голосов
/ 13 марта 2019

https://caniuse.com/#search=find состояния Метод find () не поддерживается IE11.

В то же время я тестирую этот метод find () в IE11 и не нашел никаких следов неправильного поведения.

Я также протестировал в 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 () не определен

Да, в IE11 он возвращает ожидаемый результат 5 вместо TypeError: undefined не является функцией, так как SO: Array.prototype.find () не определен в 2014 году.

Итак ... Я что-то упустил, и IE11 действительно не работает должным образом с Array.prototype.find или последними обновлениями IE11, которые были сделаны некоторое время назад (но позже, чем вопрос SO, рассмотренный выше в 2014 году ) стал поддерживать этот метод?

Правильно ли https://caniuse.com/#search=find, когда IE11 не поддерживает Array.prototype.find? Есть доказательства?

Спасибо.

UPD: вот экран моего IE11: enter image description here

Ответы [ 2 ]

5 голосов
/ 13 марта 2019

Все, что вы прочитали, правильно.В ваших тестах есть недостатки.Возможно, вы включили Polyfill, который добавил метод в IE11.

It does not work in IE11

2 голосов
/ 13 марта 2019

Вы можете попробовать следующие шаги для проверки:

  1. Откройте пустую вкладку в IE.
  2. Открыть консоль в dev tools.
  3. Введите следующий код: [1,2,3].find(function(n) { !!n; })
    • Если приведенный выше код выдает ошибку (, которая должна ), вы используете полифилл. Следовательно, ваш код не нарушается.
    • Если это работает, единственное объяснение состоит в том, что каким-то образом некоторые обновления добавили свое определение. Но это очень маловероятно, поскольку MS прекратила поддержку.

Вот что я получаю:

enter image description here

...