{"id":11929,"date":"2021-07-16T19:43:18","date_gmt":"2021-07-16T17:43:18","guid":{"rendered":"https:\/\/www.espai.es\/blog\/?p=11929"},"modified":"2021-09-16T17:24:03","modified_gmt":"2021-09-16T15:24:03","slug":"es2021-novedades-de-javascript-2021","status":"publish","type":"post","link":"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/","title":{"rendered":"ES2021: Novedades de JavaScript en 2021"},"content":{"rendered":"<p>JavaScript (o EcmaScript) es un lenguaje vivo y cada a\u00f1o recibe algunas novedades. En el a\u00f1o 2015 recibi\u00f3 muchas mejoras importantes, pero <strong>por lo general las mejoras que recibe cada a\u00f1o no son rompedoras<\/strong>. Este es el primero de una serie de art\u00edculos donde vamos a repasar <a href=\"https:\/\/github.com\/tc39\/proposals\/blob\/master\/finished-proposals.md\" target=\"_blank\" rel=\"noopener\">las novedades de los \u00faltimos a\u00f1os en JavaScript<\/a>. Empezaremos por las novedades del a\u00f1o 2021, es decir, por ES2021.<\/p>\n<p>Me voy a centrar exclusivamente en aquellas novedades de ES2021 que sean m\u00e1s asequibles. Las novedades que impliquen un uso avanzado del lenguaje las comentar\u00e9 simplemente de pasada.<\/p>\n<h2><a href=\"https:\/\/github.com\/tc39\/proposal-string-replaceall\" target=\"_blank\" rel=\"noopener\">String.prototype.replaceAll<\/a><\/h2>\n<p>Se trata de un nuevo m\u00e9todo para las cadenas de texto. Es una variante del m\u00e9todo <strong>replace()<\/strong>, con la diferencia que el m\u00e9todo <strong>replace()<\/strong> solo reemplaza la primera aparici\u00f3n del texto que buscamos, mientras que <strong>replaceAll()<\/strong> reemplaza todas las apariciones.<\/p>\n<pre class=\"lang:js decode:true \" title=\"Ejemplo de replaceAll()\">var plantilla = \"Muchas gracias [usuario] por tu compra en nuestra tienda!&lt;br&gt;\"+\r\n    \"Esperamos volver a verte pronto [usuario].\";\r\nvar resultado = plantilla.replaceAll(\"[usuario]\", \"Pepe\");\r\ndocument.write(resultado);<\/pre>\n<p>Como es algo muy nuevo, y para maximizar compatibilidad con navegadores antiguos, sigue siendo preferible el uso de expresiones regulares (adem\u00e1s con expresiones regulares podemos hacer que sea insensible a las may\u00fasculas).<\/p>\n<pre class=\"lang:default decode:true \" title=\"Ejemplo de alternativa a replaceAll() con una expresi\u00f3n regular\">var plantilla = \"Muchas gracias [USUARIO] por tu compra en nuestra tienda!&lt;br&gt;\"+\r\n    \"Esperamos volver a verte pronto [usuario].\";\r\nvar resultado = plantilla.replace(\/\\[usuario\\]\/gi, \"Pepe\");\r\ndocument.write(resultado);<\/pre>\n<h2><a href=\"https:\/\/github.com\/tc39\/proposal-promise-any\" target=\"_blank\" rel=\"noopener\">Promise.any<\/a><\/h2>\n<p>Las promesas son un tema complejo, as\u00ed que no voy a entrar en detalle, pero cualquiera que haya usado promesas entender\u00e1 f\u00e1cilmente para que sirve este nuevo m\u00e9todo. Si no las has usado con anterioridad, te recomiendo mi art\u00edculo de\u00a0<a href=\"https:\/\/www.espai.es\/blog\/2019\/02\/promesas-en-javascript\/\" target=\"_blank\" rel=\"noopener\">introducci\u00f3n a las promesas<\/a>\u00a0y mi art\u00edculo sobre <a href=\"https:\/\/www.espai.es\/blog\/2019\/05\/async-await-otra-forma-de-usar-promesas-en-javascript\/\" target=\"_blank\" rel=\"noopener\">async\/await<\/a>.<\/p>\n<p>En el primer art\u00edculo se mencionan los m\u00e9todos est\u00e1ticos de la clase <strong>Promise<\/strong>. Pues bien, <strong>any()<\/strong> es un nuevo m\u00e9todo est\u00e1tico de dicha clase.<\/p>\n<p>El m\u00e9todo <strong>any()<\/strong> es muy similar al m\u00e9todo\u00a0<strong>race()\u00a0<\/strong>(comentado en dicho art\u00edculo).\u00a0La diferencia simplemente es que en el caso del m\u00e9todo <strong>race()<\/strong>, si falla una promesa se produce una excepci\u00f3n, mientras que con el m\u00e9todo <strong>any()<\/strong> solo se produce una excepci\u00f3n si fallan todas las promesas.<\/p>\n<p>En caso de error se proporciona un nuevo tipo de objeto de la clase\u00a0<strong>AggregateError<\/strong>, que viene a ser una\u00a0 especie de array con todos los errores (uno por cada promesa que haya fallado).<\/p>\n<h2><a href=\"https:\/\/github.com\/tc39\/proposal-weakrefs\" target=\"_blank\" rel=\"noopener\">WeakRefs<\/a><\/h2>\n<p>Es un tema muy avanzado que la mayor\u00eda de mortales no vamos a necesitar usar NUNCA. De hecho, la propia propuesta dice claramente que <strong><em>\u00abthey are best avoided if possible\u00bb<\/em><\/strong>. As\u00ed que simplemente me voy a limitar a comentar en que consiste.<\/p>\n<p>En pocas palabras se trata de referencias a objetos que son ignoradas por el recolector de basura. Eso significa que si un objeto solo tiene este tipo de referencias activas, puede ser borrado sin contemplaciones por el recolector de basura.<\/p>\n<h2><a href=\"https:\/\/github.com\/tc39\/proposal-logical-assignment\" target=\"_blank\" rel=\"noopener\">Logical Assignment Operators<\/a><\/h2>\n<p>La idea es combinar operadores l\u00f3gicos con expresiones de asignaci\u00f3n.<\/p>\n<p>Se incluyen los siguientes 3 operadores nuevos:<\/p>\n<ul>\n<li><strong>??=<\/strong>\u00a0\u00abQQ equals\u00bb &#8211; asigna un valor solo si vale null\/undefined.<\/li>\n<li><strong>&amp;&amp;= <\/strong>\u00abAnd and equals\u00bb &#8211; asigna una valor a la variable si su valor resuelve a true<\/li>\n<li><strong>||=<\/strong>\u00a0\u00abOr or equals\u00bb &#8211; asigna una valor a la variable si su valor resuelve a false<\/li>\n<\/ul>\n<p>Lo mejor es ver un ejemplo de cada uno:<\/p>\n<pre class=\"lang:default decode:true \" title=\"QQ equals\">function saluda(nombre) {\r\n  nombre ??= \"Alumno\"; \/\/ si no tiene valor (undefined), valdr\u00e1 \"Alumno\"\r\n  alert(\"Hola \" + nombre);\r\n}\r\nsaluda();\r\nsaluda(\"Pepe\");<\/pre>\n<pre class=\"lang:default decode:true\" title=\"And and equals\">var x = 1;\r\nvar y = 0;\r\nx &amp;&amp;= \"ok\";     \/\/ x valdr\u00e1 \"ok\", ya que su valor actual (1) resuelve (equivale) a true\r\ny &amp;&amp;= \"not ok\"; \/\/ y seguir\u00e1 valiendo 0, ya que su valor actual (0) resuelve a false<\/pre>\n<pre class=\"lang:default decode:true\" title=\"Or or Equals\">var x = 1;\r\nvar y = 0;\r\nx ||= \"ok\";     \/\/ x valdr\u00e1 1, ya que su valor actual (1) resuelve (equivale) a true\r\ny ||= \"not ok\"; \/\/ y valdr\u00e1 \"not ok\", ya que su valor actual (0) resuelve a false<\/pre>\n<h2><a href=\"https:\/\/github.com\/tc39\/proposal-numeric-separator\" target=\"_blank\" rel=\"noopener\">Numeric separators<\/a><\/h2>\n<p>Se trata simplemente de la posibilidad de a\u00f1adir el s\u00edmbolo _ para separar los d\u00edgitos de un n\u00famero para facilitar su lectura y\/o interpretaci\u00f3n. Sirve tanto para n\u00fameros enteros como n\u00fameros de coma flotante.<\/p>\n<p>La interpretaci\u00f3n del n\u00famero es cosa nuestra, el s\u00edmbolo _ simplemente permite separar los n\u00fameros sin provocar un error.<\/p>\n<pre class=\"lang:default decode:true\" title=\"Ejemplo con importes\">var importe = 12345678;   \/\/ este importe que es? euros? c\u00e9ntimos de euro?\r\nvar importe = 123_456_78; \/\/ podemos interpretarlo como c\u00e9ntimos de euro (123.456,78)\r\nvar importe = 12_345_678; \/\/ podemos interpretarlo como euros (12.345.678\u20ac)<\/pre>\n<p>En los 3 casos de este ejemplo, el valor es el mismo (12345678), pero con la diferente separaci\u00f3n podemos inferir si el importe corresponde a c\u00e9ntimos de euro o a euros.<\/p>\n<pre class=\"lang:default decode:true \" title=\"Ejemplo con importes #2\">var importe = 1283792189; \/\/ cientos de millones? miles de millones? decenas de miles de mill.?\r\nvar importe = 1_283_792_189; \/\/ con el separador se ve f\u00e1cilmente que son mil millones<\/pre>\n<p>Se puede usar tambi\u00e9n para los decimales, n\u00fameros hexadecimales, etc.<\/p>\n<pre class=\"lang:default decode:true \" title=\"Otros ejemplos del separador de n\u00fameros\">var peso = 0.000_001 \/\/ 0.000001\r\nvar hex = 0x45_FE_C3_34; \/\/ 0x45FEC334<\/pre>\n<h2>Evita ir a la \u00faltima<\/h2>\n<p>Y nada m\u00e1s. Como pod\u00e9is ver las novedades de ES2021 fueron poca cosa, pero nunca est\u00e1 de m\u00e1s conocerlas para aprovechar aquellas que nos resulten \u00fatiles o reconocer aquellas que encontremos en c\u00f3digo fuente ajeno.<\/p>\n<p>De todos modos, recomiendo no ir a la \u00faltima y empezar a usar estas novedades de\u00a0ES2021 como si nos fuera la vida en ello. Recordad que al ser novedades del lenguaje,<strong> es recomendable no usarlas si no estamos seguros de que nuestros usuarios tienen el navegador actualizado<\/strong>, ya que en caso contrario, provocar\u00e1n errores al intentar ejecutarse.<\/p>\n<p>Si te has quedado con ganas de m\u00e1s, puedes echarle un vistazo al art\u00edculo con las novedades del a\u00f1o anterior, es decir, con las <a href=\"https:\/\/www.espai.es\/blog\/2021\/09\/es2020-novedades-de-javascript-en-2020\/\" target=\"_blank\" rel=\"noopener\">novedades de ES2020<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>JavaScript (o EcmaScript) es un lenguaje vivo y cada a\u00f1o recibe algunas novedades. En el a\u00f1o 2015 recibi\u00f3 muchas mejoras importantes, pero por lo general las mejoras que recibe cada a\u00f1o no son rompedoras. Este es el primero de una serie de art\u00edculos donde vamos&#8230;<\/p>\n","protected":false},"author":23,"featured_media":12025,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_ef_editorial_meta_date_first-draft-date":"","_ef_editorial_meta_paragraph_assignment":"","_ef_editorial_meta_checkbox_needs-photo":"","_ef_editorial_meta_number_word-count":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[7,5],"tags":[253],"class_list":["post-11929","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-diseno-web","category-programacion","tag-javascript"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>ES2021: Novedades de JavaScript en 2021 - Blog Escola Espai<\/title>\n<meta name=\"description\" content=\"JavaScript es un lenguaje vivo y cada a\u00f1o recibe algunas novedades. En este art\u00edculo vamos a ver las novedades del a\u00f1o 2021, es decir, ES2021.\" \/>\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.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ES2021: Novedades de JavaScript en 2021 - Blog Escola Espai\" \/>\n<meta property=\"og:description\" content=\"JavaScript es un lenguaje vivo y cada a\u00f1o recibe algunas novedades. En este art\u00edculo vamos a ver las novedades del a\u00f1o 2021, es decir, ES2021.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Escola Espai\" \/>\n<meta property=\"article:published_time\" content=\"2021-07-16T17:43:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-09-16T15:24:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/07\/es2021.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Abel Camarena\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Abel Camarena\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/\"},\"author\":{\"name\":\"Abel Camarena\",\"@id\":\"https:\/\/www.espai.es\/blog\/#\/schema\/person\/b2d40404b9d987e3586e186c021ef897\"},\"headline\":\"ES2021: Novedades de JavaScript en 2021\",\"datePublished\":\"2021-07-16T17:43:18+00:00\",\"dateModified\":\"2021-09-16T15:24:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/\"},\"wordCount\":760,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/07\/es2021.jpg\",\"keywords\":[\"javascript\"],\"articleSection\":[\"Dise\u00f1o Web\",\"Programaci\u00f3n\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/\",\"url\":\"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/\",\"name\":\"ES2021: Novedades de JavaScript en 2021 - Blog Escola Espai\",\"isPartOf\":{\"@id\":\"https:\/\/www.espai.es\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/07\/es2021.jpg\",\"datePublished\":\"2021-07-16T17:43:18+00:00\",\"dateModified\":\"2021-09-16T15:24:03+00:00\",\"author\":{\"@id\":\"https:\/\/www.espai.es\/blog\/#\/schema\/person\/b2d40404b9d987e3586e186c021ef897\"},\"description\":\"JavaScript es un lenguaje vivo y cada a\u00f1o recibe algunas novedades. En este art\u00edculo vamos a ver las novedades del a\u00f1o 2021, es decir, ES2021.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/#primaryimage\",\"url\":\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/07\/es2021.jpg\",\"contentUrl\":\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/07\/es2021.jpg\",\"width\":1000,\"height\":500,\"caption\":\"es2021\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.espai.es\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ES2021: Novedades de JavaScript en 2021\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.espai.es\/blog\/#website\",\"url\":\"https:\/\/www.espai.es\/blog\/\",\"name\":\"Blog Escola Espai\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.espai.es\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.espai.es\/blog\/#\/schema\/person\/b2d40404b9d987e3586e186c021ef897\",\"name\":\"Abel Camarena\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.espai.es\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/035501b0f14e120b1a49121758e2056b8d589fc43b9d3c3ad3670a197a90dddf?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/035501b0f14e120b1a49121758e2056b8d589fc43b9d3c3ad3670a197a90dddf?s=96&d=mm&r=g\",\"caption\":\"Abel Camarena\"},\"sameAs\":[\"http:\/\/www.espai.es\"],\"url\":\"https:\/\/www.espai.es\/blog\/author\/abel\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ES2021: Novedades de JavaScript en 2021 - Blog Escola Espai","description":"JavaScript es un lenguaje vivo y cada a\u00f1o recibe algunas novedades. En este art\u00edculo vamos a ver las novedades del a\u00f1o 2021, es decir, ES2021.","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.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/","og_locale":"es_ES","og_type":"article","og_title":"ES2021: Novedades de JavaScript en 2021 - Blog Escola Espai","og_description":"JavaScript es un lenguaje vivo y cada a\u00f1o recibe algunas novedades. En este art\u00edculo vamos a ver las novedades del a\u00f1o 2021, es decir, ES2021.","og_url":"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/","og_site_name":"Blog Escola Espai","article_published_time":"2021-07-16T17:43:18+00:00","article_modified_time":"2021-09-16T15:24:03+00:00","og_image":[{"width":1000,"height":500,"url":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/07\/es2021.jpg","type":"image\/jpeg"}],"author":"Abel Camarena","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Abel Camarena","Tiempo de lectura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/#article","isPartOf":{"@id":"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/"},"author":{"name":"Abel Camarena","@id":"https:\/\/www.espai.es\/blog\/#\/schema\/person\/b2d40404b9d987e3586e186c021ef897"},"headline":"ES2021: Novedades de JavaScript en 2021","datePublished":"2021-07-16T17:43:18+00:00","dateModified":"2021-09-16T15:24:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/"},"wordCount":760,"commentCount":0,"image":{"@id":"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/#primaryimage"},"thumbnailUrl":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/07\/es2021.jpg","keywords":["javascript"],"articleSection":["Dise\u00f1o Web","Programaci\u00f3n"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/","url":"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/","name":"ES2021: Novedades de JavaScript en 2021 - Blog Escola Espai","isPartOf":{"@id":"https:\/\/www.espai.es\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/#primaryimage"},"image":{"@id":"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/#primaryimage"},"thumbnailUrl":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/07\/es2021.jpg","datePublished":"2021-07-16T17:43:18+00:00","dateModified":"2021-09-16T15:24:03+00:00","author":{"@id":"https:\/\/www.espai.es\/blog\/#\/schema\/person\/b2d40404b9d987e3586e186c021ef897"},"description":"JavaScript es un lenguaje vivo y cada a\u00f1o recibe algunas novedades. En este art\u00edculo vamos a ver las novedades del a\u00f1o 2021, es decir, ES2021.","breadcrumb":{"@id":"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/#primaryimage","url":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/07\/es2021.jpg","contentUrl":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/07\/es2021.jpg","width":1000,"height":500,"caption":"es2021"},{"@type":"BreadcrumbList","@id":"https:\/\/www.espai.es\/blog\/2021\/07\/es2021-novedades-de-javascript-2021\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.espai.es\/blog\/"},{"@type":"ListItem","position":2,"name":"ES2021: Novedades de JavaScript en 2021"}]},{"@type":"WebSite","@id":"https:\/\/www.espai.es\/blog\/#website","url":"https:\/\/www.espai.es\/blog\/","name":"Blog Escola Espai","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.espai.es\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.espai.es\/blog\/#\/schema\/person\/b2d40404b9d987e3586e186c021ef897","name":"Abel Camarena","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.espai.es\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/035501b0f14e120b1a49121758e2056b8d589fc43b9d3c3ad3670a197a90dddf?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/035501b0f14e120b1a49121758e2056b8d589fc43b9d3c3ad3670a197a90dddf?s=96&d=mm&r=g","caption":"Abel Camarena"},"sameAs":["http:\/\/www.espai.es"],"url":"https:\/\/www.espai.es\/blog\/author\/abel\/"}]}},"jetpack_featured_media_url":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/07\/es2021.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/posts\/11929","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/users\/23"}],"replies":[{"embeddable":true,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/comments?post=11929"}],"version-history":[{"count":21,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/posts\/11929\/revisions"}],"predecessor-version":[{"id":12338,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/posts\/11929\/revisions\/12338"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/media\/12025"}],"wp:attachment":[{"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/media?parent=11929"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/categories?post=11929"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/tags?post=11929"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}