{"id":21102,"date":"2018-08-02T16:37:15","date_gmt":"2018-08-02T14:37:15","guid":{"rendered":"https:\/\/www.inovex.de\/blog\/?p=13537"},"modified":"2022-11-24T10:50:46","modified_gmt":"2022-11-24T09:50:46","slug":"es2018","status":"publish","type":"post","link":"https:\/\/www.inovex.de\/de\/blog\/es2018\/","title":{"rendered":"ES2018: What&#8217;s new in JavaScript? [State of the Web]"},"content":{"rendered":"<p>JavaScript has come a long way from its origins in 1995 to the revolution of ES2015. Thanks to Babel we can enjoy the comfort and many features of ES2015 and the following releases in 2016 and 2017\u2014even in outdated browser versions. Of course, that is not the end. ES2018 is already here and ES2019 is on its way. Lets take a look.<!--more--><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\"><\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#Introduction\" >Introduction<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#ES2018\" >ES2018<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#Template-literals-revision\" >Template literals revision<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#Promiseprototypefinally\" >Promise.prototype.finally()<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#Rest-properties-for-objects\" >Rest properties for objects<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#Spread-properties-for-objects\" >Spread properties for objects<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#Asynchronous-iteration\" >Asynchronous iteration<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#RegExp-unicode-property-escapes\" >RegExp unicode property escapes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#RegExp-s-flag-dotAll\" >RegExp s flag (dotAll)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#RegExp-lookbehind-assertions\" >RegExp lookbehind assertions<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#RegExp-named-capture-groups\" >RegExp named capture groups<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#The-future-aka-ES2019\" >The future aka ES2019<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#Finished-stage-4\" >Finished (stage 4)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#Optional-Catch-Binding\" >Optional Catch Binding<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#JSON-superset\" >JSON superset<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#Candidates-stage-3\" >Candidates (stage 3)<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#Conclusion\" >Conclusion<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Introduction\"><\/span>Introduction<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>This article is part of our <a href=\"https:\/\/www.inovex.de\/blog\/state-of-the-web-2018\/\" target=\"_blank\" rel=\"noopener\">State of the Web format<\/a> we publish on a regular basis. Check out our other articles about the newest tech related stuff on the web.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"ES2018\"><\/span>ES2018<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"Template-literals-revision\"><\/span>Template literals revision<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Template literals were a really great addition to JavaScript. But they have problems with some string sequences after backslashes:<\/p>\n<ul>\n<li>`\\u`: unicode escape<\/li>\n<li>`\\x`: hex Escape<\/li>\n<li>`\\\\` with following digits: octal escape<\/li>\n<\/ul>\n<p>If you try to use `\\unicode` in a template literal, you will get a syntax error due to an invalid unicode escape sequence.<\/p>\n<p>The proposed solution in ES2018 is to use a template tag function.<\/p>\n<p><script async src=\"\/\/jsfiddle.net\/e7wunzLf\/5\/embed\/js\/\"><\/script><\/p>\n<p>The template tag function `tagDemo` will receive the strings as arguments while the string has a &#8222;cooked&#8220; representation and the property `raw` lets you access the raw string. If you use an invalid escape sequence, the &#8222;cooked&#8220; version will be undefined and the raw version will contain the plain text version of the string.<\/p>\n<p>But template tag functions can also be used to manipulate template literals. A tag functions gets two parameters: an array of strings separated by the expressions and the expression values. The following example shows you how to use a tag function to transform the expression values to uppercase.<\/p>\n<p><script async src=\"\/\/jsfiddle.net\/zrmwjb9u\/30\/embed\/js\/\"><\/script><\/p>\n<p>Supported platforms: latest browsers (except Edge), Node.js &gt;= 8.10<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Promiseprototypefinally\"><\/span>Promise.prototype.finally()<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>You need to do something regardless of the outcome of a promise? No problem, `finally()` will be called always after everything else is finished.<\/p>\n<p><script async src=\"\/\/jsfiddle.net\/rys4nuqj\/9\/embed\/js\/\"><\/script><\/p>\n<p>Supported platforms: Babel, latest browsers (except Edge)<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Rest-properties-for-objects\"><\/span>Rest properties for objects<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>The rest operator `&#8230;` can now be used to extract properties from objects. You can even use it to filter certain properties from an object without iterating it.<\/p>\n<p><script async src=\"\/\/jsfiddle.net\/ojufzm6q\/6\/embed\/js\/\"><\/script><\/p>\n<p>Supported platforms: Babel, latest browsers (except Edge), Node.js &gt;= 8.3<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Spread-properties-for-objects\"><\/span>Spread properties for objects<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>You want to put all properties of an object into a new object? Here you go, the spread operator `&#8230;` is you new best friend.<\/p>\n<p><script async src=\"\/\/jsfiddle.net\/2yvb19tj\/9\/embed\/js\/\"><\/script><\/p>\n<p>Supported platforms: Babel, latest browsers (except Edge), Node.js &gt;= 8.3<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Asynchronous-iteration\"><\/span>Asynchronous iteration<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>With the support of `async\/await` in for-loops, it is now much more elegant to iterate an array of promises and resolve them.<\/p>\n<p><script async src=\"\/\/jsfiddle.net\/Lvns9rkc\/16\/embed\/js\/\"><\/script><\/p>\n<p>Supported platforms: Babel, latest browsers (except Edge and Firefox), Node.js &gt;= 8.10 (Feature Flag)<\/p>\n<h4><span class=\"ez-toc-section\" id=\"RegExp-unicode-property-escapes\"><\/span>RegExp unicode property escapes<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Matching unicode characters in regular expressions can be quite a pain. ES2018 to the rescue! The new unicode property escape `\\p` allows you to match unicode characters, groups (languages) and even emojis.<\/p>\n<p><script async src=\"\/\/jsfiddle.net\/p60jey2u\/9\/embed\/js\/\"><\/script><\/p>\n<p>Supported platforms: Babel, latest browsers (except Edge and Firefox), Node.js &gt;= 8.3 (Feature Flag)<\/p>\n<h4><span class=\"ez-toc-section\" id=\"RegExp-s-flag-dotAll\"><\/span>RegExp s flag (dotAll)<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Dots are supposed to match a single character. Unfortunately this does not work with line terminator characters like `\\n` or `\\r`. The new `s` flag (aka dotAll) fixes this problem.<\/p>\n<p><script async src=\"\/\/jsfiddle.net\/gat6q5sh\/3\/embed\/js\/\"><\/script><\/p>\n<p>Supported platforms: Babel, latest browsers (except Edge and Firefox), Node.js &gt;= 8.10<\/p>\n<h4><span class=\"ez-toc-section\" id=\"RegExp-lookbehind-assertions\"><\/span>RegExp lookbehind assertions<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>A lookbehind assertion allows you to make sure that a certain string exists directly in front of another string.<\/p>\n<p><script async src=\"\/\/jsfiddle.net\/59s7jmho\/40\/embed\/js\/\"><\/script><\/p>\n<p>Supported platforms: Chrome &gt;= 62, Node.js &gt;= 8.10<\/p>\n<h4><span class=\"ez-toc-section\" id=\"RegExp-named-capture-groups\"><\/span>RegExp named capture groups<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Regular expressions with many groups can be tedious to manage. Thankfully ES2018 adopts named groups from other languages like Ruby, Java and many more.<\/p>\n<p><script async src=\"\/\/jsfiddle.net\/c5boxh0t\/5\/embed\/js\/\"><\/script><\/p>\n<p>Supported platforms: Babel, latest browsers (except Edge and Firefox), Node.js &gt;= 8.10 (Feature Flag)<\/p>\n<h3><span class=\"ez-toc-section\" id=\"The-future-aka-ES2019\"><\/span>The future aka ES2019<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>ECMAScript releases are managed by the <a href=\"https:\/\/www.ecma-international.org\/memento\/TC39.htm\" target=\"_blank\" rel=\"noopener\">Ecma TC39 committee<\/a>. Each new feature goes through five stages (from 0 to 4). Only proposals in stage 4 will be included in a new release. Stage 3 proposals aren&#8217;t ready yet and need refinement, but some of them are likely to have advanced onto stage 4 when a new release is finalized.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Finished-stage-4\"><\/span>Finished (stage 4)<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<h4><span class=\"ez-toc-section\" id=\"Optional-Catch-Binding\"><\/span>Optional Catch Binding<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>A catch-block always had to bind the error to a variable. Many developers just named the variable `unused` or something similar if they didn&#8217;t want to use it. ES2019 makes this obsolete.<\/p>\n<p><script async src=\"\/\/jsfiddle.net\/dapw2e7s\/3\/embed\/js\/\"><\/script><\/p>\n<p>Supported platforms: latest browsers (except Edge)<\/p>\n<h4><span class=\"ez-toc-section\" id=\"JSON-superset\"><\/span>JSON superset<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>JSON should be a consistent experience across JSON files and JavaScript, but there is a caveat: a JSON string can contain unescaped U+2028 LINE SEPARATOR or U+2029 PARAGRAPH SEPARATOR characters while ECMAScript strings cannot.<\/p>\n<p>With ES2019 this problem will be fixed. Both unescaped characters are allowed to exist in ECMAScript strings.<\/p>\n<p>Supported platforms: none at the moment<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Candidates-stage-3\"><\/span>Candidates (stage 3)<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Here is a list of features that could be really useful and will hopefully make it into the final release:<\/p>\n<ul>\n<li>Big integers<\/li>\n<li>Private instance methods and accessors<\/li>\n<li>Class public instance fields and private instance fields<\/li>\n<li>Static class fields and private static methods<\/li>\n<li>`Array.prototype.flat` and `Array.prototype.flatMap`<\/li>\n<li>`String.prototype.trimStart`, `String.prototype.trimEnd` and `String.prototype.matchAll`<\/li>\n<li>Global placeholder `global` unified in browsers, Node.js and V8 shells<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>JavaScript has exciting new features and will get even more in the future. Especially things like the rest\/spread operators and `Promise.prototype.finally()` are extremely useful. The other additions allow us to write less and more precise code and if you&#8217;re using RegExp heavily, ES2018 should make your developer life a lot easier.<\/p>\n<p>Most of the new features are already covered by modern browsers and for everything else there is Babel. With `<a href=\"https:\/\/github.com\/babel\/babel-preset-env\" target=\"_blank\" rel=\"noopener\">babel-preset-env<\/a>` it&#8217;s really simple to add a list of platforms you have to support\u2014Babel will include necessary polyfills automatically.<\/p>\n<p>If you need more detailed information on ES2018 and ES2019 compatibility of your preferred platforms\u2014<a href=\"http:\/\/kangax.github.io\/compat-table\/es2016plus\/\" target=\"_blank\" rel=\"noopener\">Compat Table<\/a>\u00a0has you covered.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>JavaScript has come a long way from its origins in 1995 to the revolution of ES2015. Thanks to Babel we can enjoy the comfort and many features of ES2015 and the following releases in 2016 and 2017\u2014even in outdated browser versions. Of course, that is not the end. ES2018 is already here and ES2019 is [&hellip;]<\/p>\n","protected":false},"author":81,"featured_media":13586,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"ep_exclude_from_search":false,"footnotes":""},"tags":[70],"service":[420],"coauthors":[{"id":81,"display_name":"David Henning","user_nicename":"dhenning"}],"class_list":["post-21102","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-web","service-apps"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>ES2018: What&#039;s new in JavaScript? [State of the Web 2018]<\/title>\n<meta name=\"description\" content=\"JavaScript has come a long way from its origins in 1995 to the revolution of ES2015. Thanks to Babel we can enjoy the comfort and many features of ES2015 and the following releases in 2016 and 2017\u2014even in outdated browser versions. But that&#039;s not the end: ES2018 is here and ES2019 is on its way. Lets take a look!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.inovex.de\/de\/blog\/es2018\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ES2018: What&#039;s new in JavaScript? [State of the Web 2018]\" \/>\n<meta property=\"og:description\" content=\"JavaScript has come a long way from its origins in 1995 to the revolution of ES2015. Thanks to Babel we can enjoy the comfort and many features of ES2015 and the following releases in 2016 and 2017\u2014even in outdated browser versions. But that&#039;s not the end: ES2018 is here and ES2019 is on its way. Lets take a look!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inovex.de\/de\/blog\/es2018\/\" \/>\n<meta property=\"og:site_name\" content=\"inovex GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inovexde\" \/>\n<meta property=\"article:published_time\" content=\"2018-08-02T14:37:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-11-24T09:50:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/07\/ES2018.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"David Henning\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/07\/ES2018-1024x576.png\" \/>\n<meta name=\"twitter:creator\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:site\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"David Henning\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\u00a0Minuten\" \/>\n\t<meta name=\"twitter:label3\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data3\" content=\"David Henning\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/es2018\/\"},\"author\":{\"name\":\"David Henning\",\"@id\":\"https:\/\/www.inovex.de\/de\/#\/schema\/person\/3e71600c2edf89c4b64fd8fe94dec505\"},\"headline\":\"ES2018: What&#8217;s new in JavaScript? [State of the Web]\",\"datePublished\":\"2018-08-02T14:37:15+00:00\",\"dateModified\":\"2022-11-24T09:50:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/es2018\/\"},\"wordCount\":951,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.inovex.de\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/07\/ES2018.png\",\"keywords\":[\"Web\"],\"articleSection\":[\"Applications\",\"English Content\",\"General\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/es2018\/\",\"url\":\"https:\/\/www.inovex.de\/de\/blog\/es2018\/\",\"name\":\"ES2018: What's new in JavaScript? [State of the Web 2018]\",\"isPartOf\":{\"@id\":\"https:\/\/www.inovex.de\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/07\/ES2018.png\",\"datePublished\":\"2018-08-02T14:37:15+00:00\",\"dateModified\":\"2022-11-24T09:50:46+00:00\",\"description\":\"JavaScript has come a long way from its origins in 1995 to the revolution of ES2015. Thanks to Babel we can enjoy the comfort and many features of ES2015 and the following releases in 2016 and 2017\u2014even in outdated browser versions. But that's not the end: ES2018 is here and ES2019 is on its way. Lets take a look!\",\"breadcrumb\":{\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.inovex.de\/de\/blog\/es2018\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#primaryimage\",\"url\":\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/07\/ES2018.png\",\"contentUrl\":\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/07\/ES2018.png\",\"width\":1920,\"height\":1080,\"caption\":\"ES2018 State of the Web\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.inovex.de\/de\/blog\/es2018\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.inovex.de\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ES2018: What&#8217;s new in JavaScript? [State of the Web]\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.inovex.de\/de\/#website\",\"url\":\"https:\/\/www.inovex.de\/de\/\",\"name\":\"inovex GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.inovex.de\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.inovex.de\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.inovex.de\/de\/#organization\",\"name\":\"inovex GmbH\",\"url\":\"https:\/\/www.inovex.de\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png\",\"contentUrl\":\"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png\",\"width\":1921,\"height\":1081,\"caption\":\"inovex GmbH\"},\"image\":{\"@id\":\"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/inovexde\",\"https:\/\/x.com\/inovexgmbh\",\"https:\/\/www.instagram.com\/inovexlife\/\",\"https:\/\/www.linkedin.com\/company\/inovex\",\"https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.inovex.de\/de\/#\/schema\/person\/3e71600c2edf89c4b64fd8fe94dec505\",\"name\":\"David Henning\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/www.inovex.de\/de\/#\/schema\/person\/image\/f4660bbde84110c585942c9a9181f139\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f58c3cd0a15cc0fd9e27b474467907e8238a060eee1b42e5a698179f04cb3895?s=96&d=retro&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f58c3cd0a15cc0fd9e27b474467907e8238a060eee1b42e5a698179f04cb3895?s=96&d=retro&r=g\",\"caption\":\"David Henning\"},\"url\":\"https:\/\/www.inovex.de\/de\/blog\/author\/dhenning\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ES2018: What's new in JavaScript? [State of the Web 2018]","description":"JavaScript has come a long way from its origins in 1995 to the revolution of ES2015. Thanks to Babel we can enjoy the comfort and many features of ES2015 and the following releases in 2016 and 2017\u2014even in outdated browser versions. But that's not the end: ES2018 is here and ES2019 is on its way. Lets take a look!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.inovex.de\/de\/blog\/es2018\/","og_locale":"de_DE","og_type":"article","og_title":"ES2018: What's new in JavaScript? [State of the Web 2018]","og_description":"JavaScript has come a long way from its origins in 1995 to the revolution of ES2015. Thanks to Babel we can enjoy the comfort and many features of ES2015 and the following releases in 2016 and 2017\u2014even in outdated browser versions. But that's not the end: ES2018 is here and ES2019 is on its way. Lets take a look!","og_url":"https:\/\/www.inovex.de\/de\/blog\/es2018\/","og_site_name":"inovex GmbH","article_publisher":"https:\/\/www.facebook.com\/inovexde","article_published_time":"2018-08-02T14:37:15+00:00","article_modified_time":"2022-11-24T09:50:46+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/07\/ES2018.png","type":"image\/png"}],"author":"David Henning","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/07\/ES2018-1024x576.png","twitter_creator":"@inovexgmbh","twitter_site":"@inovexgmbh","twitter_misc":{"Verfasst von":"David Henning","Gesch\u00e4tzte Lesezeit":"5\u00a0Minuten","Written by":"David Henning"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inovex.de\/de\/blog\/es2018\/#article","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/blog\/es2018\/"},"author":{"name":"David Henning","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/3e71600c2edf89c4b64fd8fe94dec505"},"headline":"ES2018: What&#8217;s new in JavaScript? [State of the Web]","datePublished":"2018-08-02T14:37:15+00:00","dateModified":"2022-11-24T09:50:46+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/es2018\/"},"wordCount":951,"commentCount":1,"publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/es2018\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/07\/ES2018.png","keywords":["Web"],"articleSection":["Applications","English Content","General"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inovex.de\/de\/blog\/es2018\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inovex.de\/de\/blog\/es2018\/","url":"https:\/\/www.inovex.de\/de\/blog\/es2018\/","name":"ES2018: What's new in JavaScript? [State of the Web 2018]","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/es2018\/#primaryimage"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/es2018\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/07\/ES2018.png","datePublished":"2018-08-02T14:37:15+00:00","dateModified":"2022-11-24T09:50:46+00:00","description":"JavaScript has come a long way from its origins in 1995 to the revolution of ES2015. Thanks to Babel we can enjoy the comfort and many features of ES2015 and the following releases in 2016 and 2017\u2014even in outdated browser versions. But that's not the end: ES2018 is here and ES2019 is on its way. Lets take a look!","breadcrumb":{"@id":"https:\/\/www.inovex.de\/de\/blog\/es2018\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inovex.de\/de\/blog\/es2018\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/blog\/es2018\/#primaryimage","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/07\/ES2018.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/07\/ES2018.png","width":1920,"height":1080,"caption":"ES2018 State of the Web"},{"@type":"BreadcrumbList","@id":"https:\/\/www.inovex.de\/de\/blog\/es2018\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inovex.de\/de\/"},{"@type":"ListItem","position":2,"name":"ES2018: What&#8217;s new in JavaScript? [State of the Web]"}]},{"@type":"WebSite","@id":"https:\/\/www.inovex.de\/de\/#website","url":"https:\/\/www.inovex.de\/de\/","name":"inovex GmbH","description":"","publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inovex.de\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.inovex.de\/de\/#organization","name":"inovex GmbH","url":"https:\/\/www.inovex.de\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","width":1921,"height":1081,"caption":"inovex GmbH"},"image":{"@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inovexde","https:\/\/x.com\/inovexgmbh","https:\/\/www.instagram.com\/inovexlife\/","https:\/\/www.linkedin.com\/company\/inovex","https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ"]},{"@type":"Person","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/3e71600c2edf89c4b64fd8fe94dec505","name":"David Henning","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/image\/f4660bbde84110c585942c9a9181f139","url":"https:\/\/secure.gravatar.com\/avatar\/f58c3cd0a15cc0fd9e27b474467907e8238a060eee1b42e5a698179f04cb3895?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f58c3cd0a15cc0fd9e27b474467907e8238a060eee1b42e5a698179f04cb3895?s=96&d=retro&r=g","caption":"David Henning"},"url":"https:\/\/www.inovex.de\/de\/blog\/author\/dhenning\/"}]}},"_links":{"self":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/21102","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/users\/81"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/comments?post=21102"}],"version-history":[{"count":1,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/21102\/revisions"}],"predecessor-version":[{"id":39559,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/21102\/revisions\/39559"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media\/13586"}],"wp:attachment":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media?parent=21102"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/tags?post=21102"},{"taxonomy":"service","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/service?post=21102"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/coauthors?post=21102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}