Как новые функции добавляются в JavaScript и как браузеры понимают это?
Новый синтаксис (например, функции стрелок) и объекты (например, Promises) добавляются в язык через процесс TC39 , администрируемый комитетом Ecma TC39.
Комитет Ecma TC39 отвечает за развитие языка программирования ECMAScript и разработку спецификации.
Вы можете увидеть ссылку там для общего обзора различных этапов, которые предложение должно пройти до go, чтобы быть добавленным к языку. После добавления в язык новое ключевое слово или объект будет подробно описан в официальной спецификации , которая предназначена для описания всех подробностей того, как что-то реализовано. Большое внимание уделяется тому, чтобы сделать вещи как можно более детерминированными c; ради совместимости между средами комитет должен выяснить точную семантику для максимально возможного количества ситуаций. Умные люди, как правило, занимают много дискуссий и размышлений.
После того, как описание предложения было в основном завершено, и предложение перешло на Стадию 3 (более подробно описано в первой ссылке), ожидается, что среды начнут его реализовывать. Так, например, в этот момент вы можете ожидать, что Chrome (V8) и / или Firefox в конечном итоге начнут поставлять новые версии браузера, которые содержат поддержку нового синтаксиса (ключевое слово, объект и т. Д. c), возможно, за флагом.
После того, как в предложении будет несколько реализаций "в поле", и все будет работать так, как нужно, редакторы ECMAScript интегрируют новое предложение в официальную спецификацию и предложение можно сказать, что он «закончен».
Другое резюме процесса можно найти здесь .
В частности, для функций со стрелками они были добавлены в ES2015, поэтому где-то около 2015 года браузеры начали модифицировать свои интерпретаторы Javascript для обработки функций стрелок, как того требует спецификация. Большинство версий браузера после 2015 года понимают функции стрелок; браузеров до 2015 года нет. (Так, например, IE11, начиная с 2013 года, не понимает и никогда не поймет функции стрелок - спецификация для функций стрелок вышла после публикации версии браузера)