Разве современные (2018) браузеры не поддерживают каждый? - PullRequest
0 голосов
/ 12 мая 2018

сегодня у меня был тест по веб-технологиям. Один из вопросов был

Какие циклы существуют в JavaScript?

Возможные ответы:

  1. while, do-while, forach
  2. while, do-while, для
  3. while, do-while, for-next
  4. while, do-while, for, foreach, повторить-до
  5. пока, для, foreach, для-следующего

Я выбрал ответ 1.

И это оказалось неправильно. Комментарий, который я получил к своему ответу:

WHILE, DO-WHILE и FOR - наиболее часто используемые стандартизированные циклы в JavaScript. Современные браузеры реализуют ECMAScript4 и они не поддерживают никаких других циклов. Примечание: ECMAScript5 поддерживает недавно FOREACH, но это все еще не реализовано в современных браузерах.

Правильный ответ: while, do-while, для

Мой вопрос: не является ли этот комментарий устаревшим? Или заявление w3schools о полной поддержке ECMAScript5 неверно?

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

Редактировать:

Ниже приводится более длинный ответ о том, почему я считаю, что вопрос необъективен, а ваш ответ правильный.Однако это длинное объяснение даже не нужно.Цитата вашего профессора не только устарела, но и фактическое утверждение w3schools дает именно то, что мы ищем:

ECMAScript 5 полностью поддерживается во всех современных браузерах *.

Когда вы посмотрите, для чего * в цитате, вы увидите, потому что IE9 не поддерживает ECMAScript 5, но это хорошо, потому что, как вы можете найти в моем ответе ниже, IE9 действительно поддерживает foreach:)


Оригинальный ответ:

Мало того, что список возможных ответов неполон, вопрос необъективен и плохо определен.Без предварительного определения термина «современный» и без включения его в вопрос вы не сможете ответить на вопрос без предвзятости.

Единственный способ, которым вопрос может быть действительным, - это если «современный» был определен иконкретный номер версии был индивидуален для каждого применимого браузера.

Даже если бы это было сделано, что технически позволило бы ответить на вопрос без предвзятости, это потребовало бы обновления определения - хорошо, потому что IEВ какой-то момент 5 был «современным браузером», и, очевидно, его больше нет.Когда «современный браузер» перестает быть «современным браузером»?Это, очевидно, вопрос, обреченный на излишнюю предвзятость.

Я немного не согласен с другим (очень верным) ответом, который отметил, что foreach, возможно, ссылался на аналогичный for each VBScript или foreach оператор PHP,Поскольку другие варианты ответов содержали такие строки, как repeat-until и for-next, я думаю, что смысл заключался в том, чтобы выбрать правильные ключевые слова / строки, а не правильные «утверждения».

Наконец, согласно документации Mozilla Developer Network(это потрясающий источник информации о современной веб-разработке), каждый современный браузер поддерживает foreach вплоть до IE9:

Feature   Chrome  Edge   Firefox   Internet Explorer   Opera   Safari
foreach   Yes     Yes    1.5       9                   Yes     Yes

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

0 голосов
/ 13 мая 2018

Список возможных ответов неполон.Он не включает for...in (ES1) и for...of (ES6).

Во-вторых, я считаю, foreach не относится к Array.forEach метод .Все параметры относятся к циклам конструкций из разных языков ... for-next из VB / VBScript / VB.Net, repeat-until из Pascal и foreach из PHP.Поэтому, если они имели в виду, какие циклы существуют в JavaScript буквально , тогда:

  1. Выбранный вами ответ неправильный.
  2. Вариант № 2 - это правильно не так.Однако он отсутствует for...in и for...of.

Наконец, приведенное вам объяснение неверно:

Современные браузеры поддерживают ECMAScript4, и они не поддерживаютлюбые другие циклы.

Оба вышеприведенных утверждения неверны, потому что (i) не существует такого понятия, как цикл ECMAScript4 (ii) for...in, который всегда был там.Больше нет необходимости анализировать оставшуюся часть объяснения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...