- Retorna un booleno si encuentra el elemento. Tiene muchas mejoras respecto
Array.prototype.indexOf
- Propuesto por Domenic Denicola y Rick Waldron
- ECMA documentation
['a', 'b', 'c'].includes('a') // true
['a', 'b', 'c'].includes('d') // false
// similitud con indexOf:
// arr.includes(x) -> arr.indexOf(x) >= 0
[NaN].includes(NaN) // true
[NaN].indexOf(NaN) // -1
// @see: http://speakingjs.com/es5/ch11.html#two_zeros
[-0].includes(+0) // true
// Arrays tipados también lo incluyen
let arrTip = Uint8Array.of(12, 5, 3);
console.log(arrTip.includes(5)); // true
- Añade el operador exponencial
x ** y
, su comportamiento es igual queMath.pow(x, y)
- Propuesto por Rick Waldron, Claude Pache y Brendan Eich
- ECMA documentation
let cuadrado = 3 ** 2; // 9
let numero = 3;
numero **= 2; // 9
- Async Functions for ECMAScript
- Simplifying asynchronous computations via generators (section in “Exploring ES6”)
- ES proposal: async functions
- Compatibilidad 2016+
- Axel Rauschmayer blog | ES2017
- Shared memory and atomics for ECMAscript
- ES8, el estándar Javascript de 2017 de Enrique Oriol
Propuesto por Brian Terlson
Código asíncrono utilizando promesas y generadores
- Nativo
function fetchJson(url) {
return fetch(url)
.then(request => request.text())
.then(text => {
return JSON.parse(text);
})
.catch(error => {
console.log(`ERROR: ${error.stack}`);
});
}
fetchJson('http://example.com/some_file.json')
.then(obj => console.log(obj));
- Usando la librería CO
const fetchJson = co.wrap(function* (url) {
try {
let request = yield fetch(url);
let text = yield request.text();
return JSON.parse(text);
}
catch (error) {
console.log(`ERROR: ${error.stack}`);
}
});
- Funciones Asíncronas
async function fetchJson(url) {
try {
let request = await fetch(url);
let text = await request.text();
return JSON.parse(text);
}
catch (error) {
console.log(`ERROR: ${error.stack}`);
}
}
- Variantes
// Declaración
async function foo() {}
// Expresión
const foo = async function () {};
// Método
let obj = { async foo() {} }
// Formato Arrow Function
const foo = async () => {};
- Gestiona multithreading en Javascript, basicamente web wrokers con
ArrayBuffer
. Muy bajo nivel - Propuesto por Lars T. Hansen
- Retornan un array o una matriz con los valores o las propiedades iterables de los objetos
- Propuesto por Jordan Harband
Objetos
const data = { elemnto: 'primero', otro_dato: 1 };
Object.values(data); // ["primero", 1]
Object.entries(data); // [["elemnto", "primero"], ["otro_dato", 1]]
Arrays
const obj = ['p1', 'p2', 'p3']; // equivale a { 0: 'a', 1: 'z', 2: '5' };
Object.values(obj); // ["p1", "p2", "p3"]
Object.entries(obj); // [["0", "p1"], ["1", "p2"], ["2", "p3"]]
Cadenas
Object.values('Fictizia'); // ["F", "i", "c", "t", "i"]
Object.entries('Ficti'); // [["0", "F"], ["1", "i"], ["2", "c"], ["3", "t"], ["4", "i"]]
- Se rellena una cadena por delante con
padStart
o por detras conpadEnd
, puedes especificar el relleno - Propuesto por Jordan Harband y Rick Waldron
// .padStart()
'data'.padStart(1); // "data"
'data'.padStart(7); // " data"
'data'.padStart(6, '-'); // "--data"
'data'.padStart(10, 'info'); // "infoindata"
'data'.padStart(5, '*'); // "*data"
// .padEnd()
'data'.padEnd(1); // "data"
'data'.padEnd(7); // "data "
'data'.padEnd(6, '-'); // "data--"
'data'.padEnd(10, 'info'); // "datainfoin"
'data'.padEnd(5, '*'); // "data*"
- No confundir con
Object.getOwnPropertyDescriptor()
- Devulve las descripciones de las propiedades del objeto
- Esta pensado para facilitar el clonado de objetos ya que no se muestran propiedades heredadas por prototype
- Propuesto por Jordan Harband y Andrea Giammarchi
- Object.getOwnPropertyDescriptors Proposal
- Se ignorarán las comas extras al final del último parámetro de una función
- Propuesto por Jeff Morrison
//En declaración
function foo(p1, p2, p3,) {
//...
}
//En ejecución
foo("a", "b", "b",);
- Template Literal Revision Propuesto por Tim Disney
- s (dotAll) flag for regular expressions Propuesto por Mathias Bynens
- Function.prototype.toString revision Propuesto por Michael Ficarra
- global Propuesto por Jordan Harband
- Rest/Spread Properties Propuesto por Sebastian Markbåge
- Asynchronous Iteration Propuesto por Domenic Denicola
- import() Propuesto por Domenic Denicola
- RegExp Lookbehind Assertions Propuesto por Daniel Ehrenberg
- RegExp Unicode Property Escapes Propuesto por Brian Terlson, Daniel Ehrenberg y Mathias Bynens
- RegExp named capture groups Propuesto por Daniel Ehrenberg y Brian Terlson
- Promise.prototype.finally() Propuesto por Jordan Harband
- BigInt – arbitrary precision integers Propuesto por Daniel Ehrenberg
- Class fields Propuesto por Daniel Ehrenberg y Jeff Morrison
- Optional catch binding Propuesto por Michael Ficarra
- import.meta Propuesto por Domenic Denicola
- Array.prototype.flatMap/flatten Propuesto por Brian Terlson y Michael Ficarra