The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Утверждён стандарт ECMAScript 7 (2016)

17.06.2016 10:30

На очередном собрании Генеральной Ассамблеи ECMA официально утверждён стандарт ECMAScript 2016 (ECMAScript 7 или "ECMA-262 7th edition"), определяющий базовые функциональные возможности JavaScript. ECMAScript 7 примечателен переходом к новому непрерывному процессу формирования стандартов, которые планируется выпускать ежегодно. Напомним, что прошлый стандарт ECMAScript 6 был утверждён в июне прошлого года, спустя шесть лет с момента принятия ECMAScript 5, и содержал достаточно большую порцию новшеств, которые ещё не полностью реализованы в современных браузерах.

В отличие от ECMAScript 6 спецификация ECMAScript 7 содержит относительно немного изменений, которые развивались в рамках непрерывно обновляемого варианта спецификации ECMAScript Next. В стандарт из данной черновой спецификации были перенесены уже поддерживаемые браузерами возможности, поэтому ECMAScript 7 сразу доступен во всех основных браузерах и не требует дополнительного времени на реализацию.

В ECMAScript 7 вошли изменения, связанные с устранением недоработок и внесением уточнений к ECMAScript 6, а также добавлено несколько новшеств:

  • Оператор "**" для возведения в степень. Например, вместо "Math.pow(x, y)" теперь можно указать "x ** y";
  • Методы Array.prototype.includes() и TypedArray.prototype.includes() для определения наличия элементов в массиве. Напрмер, "[1, 2, 3].includes(2)" вернёт true, а "[1, 2, 3].includes(4)" вернёт false;
  • Для генераторов и методов генераторов больше не вызываются конструкторы;


  1. Главная ссылка к новости (https://mail.mozilla.org/piper...)
  2. OpenNews: В Chrome и движке V8 обеспечена поддержка спецификаций ECMAScript 6 и 7
  3. OpenNews: Утверждён стандарт ECMAScript 6
  4. OpenNews: ECMAScript 5 утвержден в качестве стандарта
  5. OpenNews: Adobe подарила сообществу Mozilla код ECMAScript 4. Вышел Firefox 1.5.0.8
  6. OpenNews: Google развивает AtScript, вариант JavaScript с аннотациями типов
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/44618-ecmascript
Ключевые слова: ecmascript, javascript, standard
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (46) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 11:17, 17/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +14 +/
    > String.prototype.padStart() и String.prototype.padEnd()

    это на них так модуль удаленный из npm повлиял?

     
     
  • 2.15, Аноним (-), 12:21, 17/06/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Спецификация была ещё с июля 2015 года, а в stage 3(говорит вендорам, что пора бы уже у себя это запилить) было уже в ноябре того же года
     

  • 1.2, Аноним (-), 11:36, 17/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    >ECMAScript 7 примечателен переходом к новому непрерывному процессу формирования стандартов

    We need to go deeper. Ждем стандарт на процесс формирования стандартов.

     
     
  • 2.7, Crazy Alex (ok), 11:57, 17/06/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Было бы неплохо, кстати
     
  • 2.28, КО (?), 17:22, 17/06/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    ГОСТ Р 1.2-92
     
     
  • 3.39, Crazy Alex (ok), 01:48, 18/06/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Если стандарт не международный - это не стандарт. тем более в IT.
     

  • 1.3, Анонимомус (?), 11:36, 17/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Странные ребята, .includes() с одной стороны нужен, а с другой уже есть .indexOf, лучше бы форматирование дат сделали, чем дублировать фукционал.
     
     
  • 2.4, Анином (?), 11:41, 17/06/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    indexOf в отличии от includes например не отреагирует на NaN
    [NaN].indexOf(NaN); // -1
    [NaN].includes(NaN); // true
     
     
  • 3.20, azure (ok), 14:22, 17/06/2016 [^] [^^] [^^^] [ответить]  
  • +9 +/
    > [NaN].includes(NaN); // true

    Отлично! Экспектед бихевиор. Особенно учитывая что NaN != NaN. Консистентно, че.

     
     
  • 4.36, Аноним (-), 00:35, 18/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    И к чему этот пассаж? NaN найти в массиве (без ручного перебора) можно найти только таким методом.
     
     
  • 5.46, azure (ok), 23:54, 18/06/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > И к чему этот пассаж? NaN найти в массиве (без ручного перебора)
    > можно найти только таким методом.

    Если ищете именно NaN, то есть isNaN() и перебор по массиву. По моему разумению NaN это сугубо ошибочный результат неких вычислений, и его не то что искать в массиве не надо, его нужно туда не класть, потому что он никчемен и не может быть полезным образом использован далее. На человеческом языке это "хрень непонятная". Никуда её толком не воткнешь. Об этом намекает спецификация языка в которой закреплено что NaN != NaN. Одна хрень не равна другой хрени.
    Не вижу никакой силы в аргументе с поиском NaN в методе includes(). Это просто слабый аргумент.

     
     
  • 6.49, Аноним (-), 16:11, 06/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Интересно, где-то реализован полный набор:
    +-NaN Null +-Inf unassigned
    одновременно?
     
  • 2.5, Аноним (-), 11:50, 17/06/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    indexOf возвращет индекс найденного элемента иначе -1, а includes возващает булево значение.
     
     
  • 3.11, Анонимомус (?), 12:05, 17/06/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > indexOf возвращет индекс найденного элемента иначе -1, а includes возващает булево значение.

    Все, капут!! -1 к булевому не привести!

    [1,2,3].indexOf(2) !== -1
    или
    !!~[1,2,3].indexOf(2)

    стало
    [1,2,3].includes(2)

     
     
  • 4.14, Аноним (-), 12:14, 17/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    indexOf не найдет NaN, успокойся. Также includes можно передать стартовую позицию для поиска (это явно быстрее перебора с нулевой позиции indexOf в огромных массивах).
     
     
  • 5.16, Анонимомус (?), 12:32, 17/06/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Учитывая что в js NaN != NaN, довольно странное поведение, да и вообще сложно представить когда это нужно, а у indexOf так же есть стартовая позиция https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/
     
  • 5.23, тоже Аноним (ok), 15:27, 17/06/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > indexOf не найдет NaN, успокойся.

    Спокойствие дороговато выходит.
    Раньше разработчику нужно было только помнить, что indexOf не найдет NaN, потому что NaN !== NaN.
    Теперь ему еще нужно помнить, что include найдет NaN, несмотря на то, что NaN !== NaN.

    Мне одному это напоминает Пых?

     
     
  • 6.25, synweap (ok), 16:15, 17/06/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Array.prototype.includes в данном вопросе ведет себя так же, как и Set.prototype.has. Все вполне логично. Если зачем-то понадобился индекс NaN, делаешь array.findIndex(isNaN).
     
     
  • 7.44, тоже Аноним (ok), 19:30, 18/06/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Вы, возможно, удивитесь, но все это продолжает напоминать все тот же Пых: какие-то элементы языка имеют свою логику, но она не состыкована со всем остальным языком...
     
  • 4.27, Аноним (-), 16:51, 17/06/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> indexOf возвращет индекс найденного элемента иначе -1, а includes возващает булево значение.
    > Все, капут!! -1 к булевому не привести!
    > [1,2,3].indexOf(2) !== -1
    > или
    > !!~[1,2,3].indexOf(2)
    > стало
    > [1,2,3].includes(2)

    По вашей логике ненужно было вводить классы - прототипы все наше, ненужны "обещания", генераторы - юзаем колбеки везде и всюду. Изначально разные предназначения у этих функций.


     
  • 2.31, angra (ok), 19:25, 17/06/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    indexOf вынужден выдавать порядковый номер. includes от этого ограничения свободен, а значит может быть реализован совсем другим способами, дающим для больших массивов различие в скорости нахождения на порядки.
     

  • 1.8, Аноним (-), 11:59, 17/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И в яваскрипте до сих пор нет ОДНОГО метода для очищения всего массива без мороки с количеством элементов?
     
     
  • 2.10, dgdsgfsadfgsdfgsdfg (?), 12:02, 17/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    delete
     
  • 2.12, Анонимомус (?), 12:06, 17/06/2016 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > И в яваскрипте до сих пор нет ОДНОГО метода для очищения всего
    > массива без мороки с количеством элементов?

    Какой мароки? arr.length = 0;

     
  • 2.13, Аноним (-), 12:08, 17/06/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    var a = [1,2,3,4,5];
    a.length = 0;
    console.log(a); // --> [];
     
     
     
    Часть нити удалена модератором

  • 4.22, анон (?), 14:56, 17/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > клоун: Сразу видно уровень специалистов. Слово "метод" вам просто так написали?
    > a = [1,2,3]

    [1, 2, 3]
    > Array.prototype.emptyMe = function(){ this.length = 0;}
    > a.emptyMe()
    > a

    []

    пользуйся и не плач

     
     
  • 5.37, Аноним (-), 00:40, 18/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Если клоун - грустный, то пускай плачет. Цирк должен продолжаться.
     

  • 1.9, Аноним (-), 12:01, 17/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Главное чтобы современные браузеры поспевали за стандартами...
     
     
  • 2.17, Аноним (-), 12:51, 17/06/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    на удивление с этим всё неплохо, глядишь через годик можно будет уже и о babel забыть
     
     
  • 3.24, Аноним (-), 15:44, 17/06/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    От бабеля вряд ли можно будет отказаться, но пресет es2015 можно уже отключать
     

  • 1.18, Аноним (-), 12:52, 17/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Оказывается есть не только Генеральная Ассамблея ООН, но еще и про JavaScript. Круто, че
     
     
  • 2.30, _ (??), 19:03, 17/06/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Бронзовеют на глазах ...
    Интересно а Уполномоченный Генеральный Секретарь и Почётный Президент JavaScript тоже есть\будет? :)
     

  • 1.21, Аноним (-), 14:31, 17/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Оператор возведения в степень сейчас нужен как никогда.
     
  • 1.29, Аноним (-), 18:30, 17/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Методы String.prototype.padStart() и String.prototype.padEnd() для доведения строки до заданного размера

    Это же что же, left-pad.io теперь не нужен?

     
     
  • 2.32, Аноним (-), 19:46, 17/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Следующий стандарт ES: однострочник на питоне добавлено Array.prototype.123 и Array.prototype.helloworld
     

  • 1.33, Аноним (-), 20:22, 17/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Надо было значащие пробелы ввести. Было бы весело.
     
  • 1.34, Аноним (-), 20:35, 17/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Чего там с байткодом JavaScript когда уже бинарный JS  в браузеры можно будет компилить и предоставлять?
     
     
  • 2.38, Crazy Alex (ok), 01:46, 18/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Никогда. Почти что есть WebAssembly - но это не джаваскрипт.
     
  • 2.40, анон (?), 09:27, 18/06/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    скорее всего никогда. для этого придется ввести типы, а на это врядли пойдут.
     
     
  • 3.41, Аноним (-), 10:49, 18/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Из чего возникает необходимость обязательного введения типов для компиляции в байткод?
     
     
  • 4.45, angra (ok), 20:59, 18/06/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Скажу страшное, типы не являются необходимостью даже для компиляции в нативный код. Но дурачки выучили, что компилируемые языки это круто, в известных им компилируемых языках есть типы, значит без типов вообще никак. Такая вот "логика". А что такое байткод они скорее всего вообще не знают.
    Можно даже поиздеваться над ламерами и сообщить им, что javascript вообще-то относится к типизированным языкам.
     

  • 1.35, Ilya Indigo (ok), 22:13, 17/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > "ECMA-262 7th edition"

    Прямо намёк Дэвиду Флэнагану, на то, что пора обновлять книгу. :-)

     
     
  • 2.42, Аноним (-), 10:51, 18/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Да, обновлять. Причем ежегодно.
     
     
  • 3.43, Ilya Indigo (ok), 12:37, 18/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Да, обновлять. Причем ежегодно.

    Ну не каждый год, но хотя бы раз в 5 лет.
    6-ое издание на русском вышло аж в 2012 году, на английском, скорее всего в 2011.
    Пора уже.

     

  • 1.47, qwerty_qwerty (ok), 10:57, 20/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот честно, ну не тем народ занимается.

    Делают какую то хрень, была же нормальная идея с worker, забросили.
    Или вот бинарные данные, прием, передача, сериализация в/из объект, начали что то, появились массивы, ура здорово ну шагните дальше, опять запросили.
    Sqllite в веб, ура !! наконец то можно нормально сортировать и искать данные, ну нет все засрали колбеками, а все нормальное не реализовано.
    И так все.
    Как дети, у них тоже так, идея, коек как реализовали, и все уже не интересно.

     
  • 1.48, Аноним (-), 17:34, 20/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    в последнем хроме итерирование по массиву в 8 раз медленней чем выборка по индексу - это какой то позор
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру