Как и все, что связано с javascript, все движется быстро. В то время как многие из нас только начинают внедрять ES6 в производство, черновик ES7 почти завершен. ES6 был небольшим обновлением, но ES7 выглядит огромным шагом вперед. Вот несколько основных моментов о пользе, которую принесет ES7.
Свойства остатка/расширения объекта
После введения оператора распространения для массивов в ES6 этот оператор также будет поддерживать Object в ES7.
// Rest Example let { a, b, ...c } = { a: 'foo', b: 'bar', z: 1, y: 2 };
console.log(a); // 'foo'
console.log(b); // 'bar'
console.log(c); // { z: 1, y: 2 }
// Spread Example
let example = { a, b, ...c };
console.log(example); // { a: 'foo', b: 'bar', z: 1, y: 2 }
Object.values/Object.entries
У нас уже есть Object.keys, но мы все обращаемся к lodash, jQuery или какой-либо другой сторонней библиотеке, чтобы получить доступ к значениям объекта или набору записей.
const example = { a: 'foo', b: 'bar', z: 1, y: 2 };
// Values
console.log(example.values); // ['foo', 'bar', 1, 2];
// Entries
console.log(example.values); // [[a: 'foo'], [a: 'bar'], [z: 1], [y: 2]];
String.prototype.padStart/String.prototype.padEnd
Со строками Javascript сложно иметь дело. В основном это связано с отсутствием некоторых функций обработки строк, таких как заполнение. Я буду держаться подальше от фиаско с левой панелью, которое у нас было всего несколько месяцев назад. Скажу только, что это очень нужная функция основного языка.
// End 'As if JS lacks this'.padEnd(25); // 'As if JS lacks this ' 'As if JS lacks this'.padEnd(2); // 'As if JS lacks this' // Start 'As if JS lacks this'.padEnd(25); // ' As if JS lacks this' 'As if JS lacks this'.padEnd(2); // 'As if JS lacks this'
Асинхронные функции
Асинхронная функция обещает очистить весь код обещания. Несмотря на то, что Async обещает значительное улучшение по сравнению с обратными вызовами, он удалит еще больше стандартных шаблонов.
async function asyncExample(elem, animations) {
let ret = null;
try {
for(const anim of animations) {
ret = await anim(elem);
}
}
catch(e) {
// handle error here if need be
}
return ret;
}
Массив.прототип.включает
Надоело писать foo.indexOf(x) != -1? Хорошо, как и остальные из нас! ES7 добавит функцию include. Наконец, вы можете написать foo.includes(x), чтобы правильно выразить то, что вы пытаетесь сделать.
Вывод
Это только царапает поверхность того, что предлагается для ES7. Это будут долгожданные дополнения к языку. Нравится вам это или нет, но Интернет работает на Javascript. Только время покажет, улучшат ли изменения ES7 написание Javascript. Иногда я задаюсь вопросом, только свинью красят помадой?
Дополнительная литература:
Спецификация ES7: https://tc39.github.io/ecma262/
Статус ES7: https:// github.com/tc39/ecma262
Примеры ES7: https://github.com/hemanth/es7-features#exponentiation-operator (немного устарело, но полезно)
Первоначально опубликовано на broonix-rants.ghost.io 30 апреля 2016 г.