matchAll Выдает ошибку, когда флаг g сейчас отсутствует? - PullRequest
4 голосов
/ 19 февраля 2020

В документах MDN указано, что

matchAll возвращает только первое совпадение, если отсутствует флаг g.

Но если вы запустите этот код:

const regexp = RegExp('[a-c]', '');
const str = 'abc';
console.log(Array.from(str.matchAll(regexp), m => m[0]));
// Array [ "a" ]

в последней версии chrome появляется следующая ошибка:

Ошибка: неопределенные вызовы с неглобальным аргументом RegExp

Я на chrome версии 80.0.3987.116

Я не уверен, что это проблема chrome или документацию MDN необходимо обновить.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/matchAll

1 Ответ

4 голосов
/ 19 февраля 2020

Информация, представленная вам по MDN, в данном случае неверна.

Официальная спецификация ECMA, ECMA-262 от 15 февраля 2020 года ( См. Здесь ) утверждает, что если флаг g отсутствует, то matchAll должен выдать TypeError .

См. Конкретно 2.b.iii ниже.


matchAll MDN


Сообщение об ошибке, очевидно, довольно запутано с его формулировкой, но все же верно.

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