ECMASCRIPT 2018
La nueva forma de hacer Javascript
En esta ocasión hablaremos de una de las cosas más recientes en cuanto a Javascript se refiere, porque ha llegado ECMASCRIPT 2018, o ES2018 cómo a algunos les gusta llamarlo.
Echaremos una hojeada a todo lo nuevo que podemos hacer con el lenguaje que todos podrían amar, o cualquiera podría odiar.
Rest/Spread Propierties
Sintaxis:
const input = { x: 1, y: 2, a: 3, b:4 } const { x, y, ...z } = input console.log(x) console.log(y) console.log(z)
Si has entrado aquí sólo por curiosidad y no sabes que significa lo anterior, no te preocupes, aquí te lo explico, desde ECMAESCRIPT 5 se utilizan una nueva forma de declarar las variables, las cuales son let y const, cada una tiene un scope ó ámbito diferente, let representa un ámbito de bloque, es decir, que mantiene su valor en el bloque que fue declarada, y con const representa un único valor de la variable y también en un ámbito de bloque, está no puede cambiar su valor en tiempo de ejecución, lo contrario si se declara con let.
Después tenemos el Object destructuring, que muchos lo recordaremos por hacer esto:
Pues en ES2015, se ideó una forma corta de hacerlo:
Todo declarado en una sola línea, y se entiende mucho mejor.
Después está el operador de propagación (...) que fue agregado en la especificación de ES2015, que básicamente es usado para crear una copia de objeto, porque cómo muchos sabrán, hacer esto:
Esto sucede porque el lugar de hacer una copia del objeto original lo que guarda en la variable es una referencia del objeto original, y cualquier cambio en alguna de sus referencias cambia el objeto original. Para esto entra en acción el objeto de propagación.
Bien una vez explicado todo esto, sigamos con el Rest/Spread Propieties si juntamos el Object destructuring y el operador de propagación, tenemos cómo ya te lo habrás imaginado, un objeto con las propiedades que no hemos sacado del objeto original, retomando el ejemplo obtendríamos:
Después tenemos el Object destructuring, que muchos lo recordaremos por hacer esto:
var n = object.n, p = object.p, z = object.z;
Pues en ES2015, se ideó una forma corta de hacerlo:
const { n, p, z } = object
Todo declarado en una sola línea, y se entiende mucho mejor.
Después está el operador de propagación (...) que fue agregado en la especificación de ES2015, que básicamente es usado para crear una copia de objeto, porque cómo muchos sabrán, hacer esto:
const object = { n: 4, p: 6, z: 9 } const objectCopy = object objectCopy.n = 87 console.log(objectCopy.n) console.log(object.n) //Ambos muestran 87
Esto sucede porque el lugar de hacer una copia del objeto original lo que guarda en la variable es una referencia del objeto original, y cualquier cambio en alguna de sus referencias cambia el objeto original. Para esto entra en acción el objeto de propagación.
const object = { n: 4, p: 6, z: 9 } const objectCopy = {...object} objectCopy.n = 87 console.log(objectCopy.n) //Muestra 87 console.log(object.n) //Muestra 4
Bien una vez explicado todo esto, sigamos con el Rest/Spread Propieties si juntamos el Object destructuring y el operador de propagación, tenemos cómo ya te lo habrás imaginado, un objeto con las propiedades que no hemos sacado del objeto original, retomando el ejemplo obtendríamos:
const input = { x: 1, y: 2, a: 3, b:4 } const { x, y, ...z } = input console.log(x) // 1 console.log(y) // 2 console.log(z) // { a: 3, b: 4 }
Asynchronous Iteration
Sintaxis:
for await( const line of readLines(filePath) ){ console.log( line ) }
Iteraciones asincrónicas, con esta sintaxis podremos hacer llamadas a API, que necesiten de una salida asincrónica, sin bloquear a los demás, porque el iterador lo que devolvería es una Promesa, y cada vez que llamemos a next() nos traerá el resultado de la promesa que se ha resuelto.
RegExp related features
En total son 4 nuevas carácteristicas para las RegExp o Expresiones Regulares
- La bandera s ( dotAll ) para los caracteres únicode. En las algunas ocasiones el interpreté no reconocía algo cómo esto 'foo\nbar', que al testearlo con /foo.bar/ nos arrojaba falso, con está bandera, no sucederá más.
- RegExp named capture groups (capturado de nombres de grupo). Por ejemplo, cuando utilizabamos una expresión regular para validar una fecha en formato 0000-00-00,utilizabamos algo cómo esto /(\d{4})-(\d{2})-(\d{2})/, pero es que así no se vuelve muy legible, y con la nueva característica se utilizaría algo cómo esto: /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/u.
- LookBehind assertions, imaginemos una condicional en una expresión regular, bueno con está carácteristica es totalmente posible, sólo se utiliza dentro de la expresión regular los carácteres "?<=" para hacer coincidir con nuestro match positivamente y los carácteres "?<!" para hacerlo coincidir negativamente.
- Unicode Propertity Escapes: un soporte para Expresiones Regulares con carácteres únicode de diferentes idiomas.
Muchas de estas características ya están soportadas por babel en el stage-3 de sus presets, puedes echarle una hojeada en la siguiente liga, desde su compilador en línea.
Y también puedes consultar la documentación oficial de las nuevas características en las siguientes direcciones.
biobibobsku_Washington Alex Friedrich https://marketplace.visualstudio.com/items?itemName=5fratorannu.Descargar-Eon-Fleet-gratuita-2022
ResponderEliminarmukelasni
UalsiPbrit-se Stacy Perry Movavi Video Editor
ResponderEliminarMcAfee Internet Security
Dr.Web Security Space
boenitagphand
WstitinOterp-mo Jacobi Greene Software
ResponderEliminarClick
arnolegat