{"id":285585,"date":"2021-06-28T15:00:09","date_gmt":"2021-06-28T12:00:09","guid":{"rendered":"https:\/\/en.buradabiliyorum.com\/whats-new-in-the-es2021-standard-for-javascript-cloudsavvy-it\/"},"modified":"2021-06-28T15:00:09","modified_gmt":"2021-06-28T12:00:09","slug":"whats-new-in-the-es2021-standard-for-javascript-cloudsavvy-it","status":"publish","type":"post","link":"https:\/\/buradabiliyorum.com\/en\/whats-new-in-the-es2021-standard-for-javascript-cloudsavvy-it\/","title":{"rendered":"#What\u2019s New In the ES2021 Standard for JavaScript? \u2013 CloudSavvy IT"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a2dea9c02d3d\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #dd3333;color:#dd3333\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #dd3333;color:#dd3333\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a2dea9c02d3d\" checked aria-label=\"Toggle\" \/><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:\/\/buradabiliyorum.com\/en\/whats-new-in-the-es2021-standard-for-javascript-cloudsavvy-it\/#Promiseany\" >Promise.any()<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/buradabiliyorum.com\/en\/whats-new-in-the-es2021-standard-for-javascript-cloudsavvy-it\/#Logical_Assignment_Operators\" >Logical Assignment Operators<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/buradabiliyorum.com\/en\/whats-new-in-the-es2021-standard-for-javascript-cloudsavvy-it\/#StringprototypereplaceAll\" >String.prototype.replaceAll()<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/buradabiliyorum.com\/en\/whats-new-in-the-es2021-standard-for-javascript-cloudsavvy-it\/#Numeric_Separators\" >Numeric Separators<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/buradabiliyorum.com\/en\/whats-new-in-the-es2021-standard-for-javascript-cloudsavvy-it\/#Advanced_Features\" >Advanced Features<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/buradabiliyorum.com\/en\/whats-new-in-the-es2021-standard-for-javascript-cloudsavvy-it\/#Conclusion\" >Conclusion<\/a><\/li><\/ul><\/nav><\/div>\n<p><strong>&#8220;#What\u2019s New In the ES2021 Standard for Java<a href=\"https:\/\/buradabiliyorum.com\/en\/category\/download-scripts-themes-apps\/\" data-internallinksmanager029f6b8e52c=\"9\" title=\"Download Scripts &amp; Themes &amp; Apps\" target=\"_blank\" rel=\"noopener\">Script<\/a>? \u2013 CloudSavvy IT&#8221;<\/strong><\/p>\n<div id=\"article-content-area\">\n<img loading=\"lazy\" decoding=\"async\" class=\"type:primaryImage aligncenter size-full wp-image-9816\" src=\"https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/02\/c123ee3a.jpg?width=1198&amp;trim=1,1&amp;bg-color=000&amp;pad=1,1\" alt=\"Illustration showing the JavaScript logo\" width=\"1602\" height=\"902\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><\/p>\n<p>The annual release of ECMAScript <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/262.ecma-international.org\/12.0\">is here<\/a>, bringing new features and syntax improvements. The specification was finalized by the ECMA International standards organization on June 22, 2021, indicating it\u2019s now ready to use.<\/p>\n<p>ECMAScript\u2019s most popular implementation is JavaScript, the language supported by web browsers and cloud environments via runtimes like Node.js. Here\u2019s a rundown of the major changes in ES2021.<\/p>\n<h2 id=\"promise.any\"><span class=\"ez-toc-section\" id=\"Promiseany\"><\/span>Promise.any()<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Promise\/any\"><code>Promise.any()<\/code><\/a> completes the aggregate error handling support for promises. It will short circuit and return as soon as <em>one<\/em> of the passed <code>Promise<\/code> objects is fulfilled.<\/p>\n<p>If all the promises fail, the method rejects with a new <code>AggregateError<\/code>. This object encapsulates the rejection reasons for each of the individual errors.<\/p>\n<div class=\"wp-geshi-highlight-wrap5\">\n<div class=\"wp-geshi-highlight-wrap4\">\n<div class=\"wp-geshi-highlight-wrap3\">\n<div class=\"wp-geshi-highlight-wrap2\">\n<div class=\"wp-geshi-highlight-wrap\">\n<div class=\"wp-geshi-highlight\">\n<div class=\"javascript\">\n<pre class=\"de1\"><span class=\"kw1\">const<\/span> promises <span class=\"sy0\">=<\/span> <span class=\"br0\">[<\/span>doSomething<span class=\"br0\">(<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">,<\/span> doSomethingElse<span class=\"br0\">(<\/span><span class=\"br0\">)<\/span><span class=\"br0\">]<\/span><span class=\"sy0\">;<\/span>\n\u00a0\n<span class=\"kw1\">try<\/span> <span class=\"br0\">{<\/span>\n\u00a0\n    <span class=\"co1\">\/\/ This will be the return value from `doSomething()` <\/span>\n    <span class=\"co1\">\/\/ or `doSomethingElse()`, depending on which <\/span>\n    <span class=\"co1\">\/\/ resolves first<\/span>\n    <span class=\"kw1\">const<\/span> firstToResolve <span class=\"sy0\">=<\/span> await Promise.<span class=\"me1\">any<\/span><span class=\"br0\">(<\/span>promises<span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span>\n\u00a0\n<span class=\"br0\">}<\/span>\n\u00a0\n<span class=\"kw1\">catch<\/span> <span class=\"br0\">(<\/span>errors<span class=\"br0\">)<\/span> <span class=\"br0\">{<\/span>\n\u00a0\n    <span class=\"kw1\">for<\/span> <span class=\"br0\">(<\/span><span class=\"kw1\">const<\/span> error of errors<span class=\"br0\">)<\/span> <span class=\"br0\">{<\/span>\n        <span class=\"co1\">\/\/ Iterate the individual Promise rejection reasons<\/span>\n    <span class=\"br0\">}<\/span>\n\u00a0\n<span class=\"br0\">}<\/span><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p><code>Promise.any()<\/code> is useful in scenarios where you need to take action if at least one promise resolves but it doesn\u2019t matter if some fail. It complements the existing <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Promise\/all\"><code>Promise.all()<\/code><\/a> and <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Promise\/allSettled\"><code>Promise.allSettled()<\/code><\/a> methods.<\/p>\n<p>Here\u2019s a quick summary of the differences:<\/p>\n<ul>\n<li><strong><code>any()<\/code><\/strong> \u2013 Resolves if any promise resolves. Rejects if all promises reject.<\/li>\n<li><strong><code>all()<\/code><\/strong> \u2013 Resolves if all promises resolve. Rejects if any promise rejects.<\/li>\n<li><strong><code>allSettled()<\/code><\/strong> \u2013 Resolves once all promises have either resolved or rejected. This method does not reject.<\/li>\n<\/ul>\n<h2 id=\"logical-assignment-operators\"><span class=\"ez-toc-section\" id=\"Logical_Assignment_Operators\"><\/span>Logical Assignment Operators<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>ES2021 comes with some long-requested operator improvements. New logical assignment operators provide convenient short-circuiting that results in less code to write.<\/p>\n<p>The three operators (<code>&amp;&amp;=<\/code>, <code>||=<\/code> and <code>??=<\/code>) combine their corresponding logical comparison with a value assignment. You no longer need to write the variable name twice if you\u2019re only assigning when the comparison matches:<\/p>\n<div class=\"wp-geshi-highlight-wrap5\">\n<div class=\"wp-geshi-highlight-wrap4\">\n<div class=\"wp-geshi-highlight-wrap3\">\n<div class=\"wp-geshi-highlight-wrap2\">\n<div class=\"wp-geshi-highlight-wrap\">\n<div class=\"wp-geshi-highlight\">\n<div class=\"javascript\">\n<pre class=\"de1\"><span class=\"co1\">\/\/ ES2020<\/span>\nx <span class=\"sy0\">&amp;&amp;<\/span> <span class=\"br0\">(<\/span>x <span class=\"sy0\">=<\/span> y<span class=\"br0\">)<\/span>\nx <span class=\"sy0\">||<\/span> <span class=\"br0\">(<\/span>x <span class=\"sy0\">=<\/span> y<span class=\"br0\">)<\/span>\nx <span class=\"sy0\">=<\/span> x <span class=\"sy0\">??<\/span> y\n\u00a0\n<span class=\"co1\">\/\/ ES2021<\/span>\nx <span class=\"sy0\">&amp;&amp;=<\/span> y<span class=\"sy0\">;<\/span>\nx <span class=\"sy0\">||=<\/span> y<span class=\"sy0\">;<\/span>\nx <span class=\"sy0\">??=<\/span> y<span class=\"sy0\">;<\/span><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>This helps to round off the operator support and reduces the repetitiveness of assignment-heavy code. It gives logical operators the same assignment integration as the mathematical operators (<code>+=<\/code>, <code>-=<\/code>, <code>*=<\/code>).<\/p>\n<h2 id=\"string.prototype.replaceall\"><span class=\"ez-toc-section\" id=\"StringprototypereplaceAll\"><\/span>String.prototype.replaceAll()<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>A new method on the <code>String<\/code> prototype makes it much easier to replace all instances of a sub-string, without resorting to a regex. When the existing <code>replace()<\/code> method is given a string as its input, it only replaces the first instance of that value. <code>replaceAll()<\/code> adds the behavior many developers have wanted and expected.<\/p>\n<div class=\"wp-geshi-highlight-wrap5\">\n<div class=\"wp-geshi-highlight-wrap4\">\n<div class=\"wp-geshi-highlight-wrap3\">\n<div class=\"wp-geshi-highlight-wrap2\">\n<div class=\"wp-geshi-highlight-wrap\">\n<div class=\"wp-geshi-highlight\">\n<div class=\"javascript\">\n<pre class=\"de1\"><span class=\"kw1\">const<\/span> str <span class=\"sy0\">=<\/span> <span class=\"st0\">\"xxxyz\"<\/span><span class=\"sy0\">;<\/span>\n\u00a0\n<span class=\"co1\">\/\/ xxyz<\/span>\nconsole.<span class=\"me1\">log<\/span><span class=\"br0\">(<\/span>str.<span class=\"me1\">replace<\/span><span class=\"br0\">(<\/span><span class=\"st0\">\"x\"<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">\"\"<\/span><span class=\"br0\">)<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span>\n\u00a0\n<span class=\"co1\">\/\/ yz<\/span>\nconsole.<span class=\"me1\">log<\/span><span class=\"br0\">(<\/span><span class=\"co2\">\/x\/g<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">\"\"<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span>\n\u00a0\n<span class=\"co1\">\/\/ yz<\/span>\nconsole.<span class=\"me1\">log<\/span><span class=\"br0\">(<\/span>str.<span class=\"me1\">replaceAll<\/span><span class=\"br0\">(<\/span><span class=\"st0\">\"x\"<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">\"\"<\/span><span class=\"br0\">)<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>It\u2019s a little feature that should have im<a href=\"https:\/\/buradabiliyorum.com\/en\/category\/social-mediaa\/\" data-internallinksmanager029f6b8e52c=\"1\" title=\"Social Media\" target=\"_blank\" rel=\"noopener\">media<\/a>te real-world utility. A <code>replaceAll()<\/code> call increases the readability of code compared to a regex with a <code>g<\/code> (global) modifier. This is especially true when you\u2019re working with less experienced developers who may be unclear on why the regex was used.<\/p>\n<h2 id=\"numeric-separators\"><span class=\"ez-toc-section\" id=\"Numeric_Separators\"><\/span>Numeric Separators<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>A simple change adds numeral separators to the basic JavaScript syntax. This lets you place underscores between digits in literal numbers, making them more readable. They\u2019ll be automatically s<a href=\"https:\/\/buradabiliyorum.com\/en\/category\/trip-and-travel\/\" data-internallinksmanager029f6b8e52c=\"10\" title=\"Trip &amp; Travel\" target=\"_blank\" rel=\"noopener\">trip<\/a>ped out when your files are parsed.<\/p>\n<div class=\"wp-geshi-highlight-wrap5\">\n<div class=\"wp-geshi-highlight-wrap4\">\n<div class=\"wp-geshi-highlight-wrap3\">\n<div class=\"wp-geshi-highlight-wrap2\">\n<div class=\"wp-geshi-highlight-wrap\">\n<div class=\"wp-geshi-highlight\">\n<div class=\"javascript\">\n<pre class=\"de1\"><span class=\"co1\">\/\/ ES2020 - This is hard to see at a glance!<\/span>\n<span class=\"kw1\">const<\/span> billion <span class=\"sy0\">=<\/span> <span class=\"nu0\">1000000000<\/span><span class=\"sy0\">;<\/span>\n\u00a0\n<span class=\"co1\">\/\/ ES2021 - This can be more readable<\/span>\n<span class=\"kw1\">const<\/span> billion <span class=\"sy0\">=<\/span> <span class=\"nu0\">1<\/span>_000_000_000<span class=\"sy0\">;<\/span><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>Separators mimic the way in which commas are used between groups of written numbers. Their use is entirely optional. The syntax also works for binary and hexadecimal literals prefixed with <code>0b<\/code> and <code>0x<\/code>.<\/p>\n<h2 id=\"advanced-features\"><span class=\"ez-toc-section\" id=\"Advanced_Features\"><\/span>Advanced Features<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>ES2021 includes some new objects aimed at more advanced use cases. First, there\u2019s <code>WeakRef<\/code>, a mechanism that holds a reference to an object but keeps it eligible for garbage collection. The reference is \u201cweak\u201d because there\u2019s no guarantee it\u2019ll be usable in the future.<\/p>\n<p>You\u2019ll be able to access the object until it\u2019s garbage collected. It might not be garbage collected at all, as it\u2019s up to the browser when to remove unreferenced objects.<\/p>\n<p>You create weak references with the <code>WeakRef<\/code> constructor, passing in the object you want to use. You can access the original object later by calling <code>deref()<\/code>.<\/p>\n<div class=\"wp-geshi-highlight-wrap5\">\n<div class=\"wp-geshi-highlight-wrap4\">\n<div class=\"wp-geshi-highlight-wrap3\">\n<div class=\"wp-geshi-highlight-wrap2\">\n<div class=\"wp-geshi-highlight-wrap\">\n<div class=\"wp-geshi-highlight\">\n<div class=\"javascript\">\n<pre class=\"de1\"><span class=\"kw1\">const<\/span> x <span class=\"sy0\">=<\/span> <span class=\"br0\">{<\/span><span class=\"br0\">}<\/span><span class=\"sy0\">;<\/span>\n<span class=\"kw1\">const<\/span> xWeakRef <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> WeakRef<span class=\"br0\">(<\/span>x<span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span>\n\u00a0\n<span class=\"kw1\">const<\/span> deRef <span class=\"sy0\">=<\/span> xWeakRef.<span class=\"me1\">deref<\/span><span class=\"br0\">(<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span>     <span class=\"co1\">\/\/ this is the object from `x`<\/span><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>Weak references should be used to cache large objects which aren\u2019t essential to your application. The browser will be able to clean them up in times of low memory, improving overall performance.<\/p>\n<p>Alongside weak references, the new <code>FinalizationRegistry<\/code> constructor provides notifications when objects are garbage collected. It\u2019s not possible to cancel the garbage collection; this feature is intended to let you respond to clean-ups by freeing up any other associated resources. As an example, if an object representing a user was garbage collected, you could use the callback to delete a cached blob of their profile picture.<\/p>\n<div class=\"wp-geshi-highlight-wrap5\">\n<div class=\"wp-geshi-highlight-wrap4\">\n<div class=\"wp-geshi-highlight-wrap3\">\n<div class=\"wp-geshi-highlight-wrap2\">\n<div class=\"wp-geshi-highlight-wrap\">\n<div class=\"wp-geshi-highlight\">\n<div class=\"javascript\">\n<pre class=\"de1\"><span class=\"kw1\">const<\/span> registry <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> FinalizationRegistry<span class=\"br0\">(<\/span>key <span class=\"sy0\">=&gt;<\/span> <span class=\"br0\">{<\/span>\n    <span class=\"co1\">\/\/ This callback will run when a <\/span>\n    <span class=\"co1\">\/\/ registered object is garbage collected<\/span>\n    <span class=\"kw1\">if<\/span> <span class=\"br0\">(<\/span>key <span class=\"sy0\">===<\/span> <span class=\"st0\">\"user\"<\/span><span class=\"br0\">)<\/span> <span class=\"br0\">{<\/span>\n         <span class=\"co1\">\/\/ Delete cached user data here.<\/span>\n    <span class=\"br0\">}<\/span>\n<span class=\"br0\">}<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span>\n\u00a0\n<span class=\"kw1\">const<\/span> user <span class=\"sy0\">=<\/span> <span class=\"br0\">{<\/span>Username<span class=\"sy0\">:<\/span> <span class=\"st0\">\"CloudSavvy\"<\/span><span class=\"br0\">}<\/span><span class=\"sy0\">;<\/span>\nregistry.<span class=\"me1\">register<\/span><span class=\"br0\">(<\/span>user<span class=\"sy0\">,<\/span> <span class=\"st0\">\"user\"<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>In this example, your callback will run and receive <code>user<\/code> as its parameter when the <code>x<\/code> object is garbage collected. You can use the key to identify and remove similar data. You\u2019ll need to create this mechanism yourself.<\/p>\n<h2 id=\"conclusion\"><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>ES2021 is a healthy specification update that brings new convenience features to the ECMAScript community. <code>Promise.any()<\/code> completes the promise handling line-up, while logical assignment operators and <code>replaceAll()<\/code> enhance everyday ease-of-use.<\/p>\n<p>Although only just finalized, ES2021 features have been shipping in browsers all year. Chromium, Firefox, and Safari <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/caniuse.com\/?feats=mdn-javascript_builtins_string_replaceall,mdn-javascript_builtins_promise_any,mdn-javascript_builtins_weakref,mdn-javascript_operators_logical_or_assignment,mdn-javascript_operators_logical_and_assignment,mdn-javascript_operators_logical_nullish_assignment,mdn-javascript_grammar_numeric_separators\">already offer<\/a> full ES2021 support, so you can write code using the new capabilities today. Features such as <code>Promise.any()<\/code> and <code>String.prototype.replaceAll()<\/code> can be readily polyfilled for older browsers; others such as logical assignment operators can be handled by pre-processors like <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/babeljs.io\">Babel<\/a>.\n<\/div>\n<blockquote><p><strong><span style=\"color: #ff6600;\">If you liked the article, do not forget to share it with your friends. Follow us on\u00a0<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/news.google.com\/publications\/CAAqBwgKMLG0nwswvr63Aw\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Google News<\/a><\/span>\u00a0too, click on the star and choose us from your favorites.<\/span><\/strong><\/p><\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\">For forums sites go to <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/forum.buradabiliyorum.com\/\" target=\"_blank\" rel=\"noopener\">Forum.BuradaBiliyorum.Com<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\"><strong>If you want to read more like this article, you can visit our <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/en.buradabiliyorum.com\/technology\/\" target=\"_blank\" rel=\"noopener\">Technology category.<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<p><span style=\"color: black;\"><a style=\"color: #ff9900;\" href=\"https:\/\/www.cloudsavvyit.com\/12234\/whats-new-in-the-es2021-standard-for-javascript\/\" target=\"_blank\" rel=\"noopener\">Source<\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;#What\u2019s New In the ES2021 Standard for JavaScript? \u2013 CloudSavvy IT&#8221; The annual release of ECMAScript is here, bringing new features and syntax improvements. The specification was finalized by the ECMA International standards organization on June 22, 2021, indicating it\u2019s now ready to use. ECMAScript\u2019s most popular implementation is JavaScript, the language supported by web&#8230;<\/p>\n","protected":false},"author":1,"featured_media":285586,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/www.cloudsavvyit.com\/p\/uploads\/2021\/02\/c123ee3a.jpg","fifu_image_alt":"","footnotes":""},"categories":[18],"tags":[],"class_list":["post-285585","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology"],"_links":{"self":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/285585","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/comments?post=285585"}],"version-history":[{"count":0,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/285585\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media\/285586"}],"wp:attachment":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media?parent=285585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/categories?post=285585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/tags?post=285585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}