O desenvolvimento de novos recursos para a linguagem JavaScript principal realmente melhorou nos últimos cinco anos, graças, em parte, às estruturas JavaScript que ultrapassaram os limites e provaram a importância de determinadas funcionalidades. Meus posts anteriores sobre ES6, Seis recursos minúsculos, mas incríveis, do ES6 e Mais seis recursos minúsculos, porém incríveis, do ES6O artigo “Six More Tiny But Awesome Features” (Seis recursos minúsculos, mas incríveis, do ES6), destacou uma dúzia de excelentes recursos que foram adicionados ao JavaScript para facilitar nossa vida, e eles certamente facilitam. Vamos dar uma olhada em algumas das “pequenas” funcionalidades que o ES7 e o ES8 nos trouxeram!
String.prototype.padStart
/padEnd
padStart
e padEnd
nos permitem preencher uma determinada string com qualquer texto de nossa escolha para garantir que a string corresponda a um determinado comprimento:
// padStart(desiredLength, textToPrepend) // No text ''.padStart(10, 'Hi') // 'HiHiHiHiHi' // Some text 'def'.padStart(6, 'abc') // 'abcdef' // Only use what gets to length '5678'.padStart(7, '1234') // '1235678' // padEnd(desiredLength, textToAppend) '23'.padEnd(8, '0') // '23000000'
Um uso de padStart
poderia incluir o acréscimo de um código de área ao número de telefone se a entrada do usuário não tiver o tamanho correto. padEnd
pode ser usado para precisão decimal.
Object.entries
Object.entries
nos permite obter os pares de propriedades enumeráveis de um objeto no formato de matriz ([key, value]):
// Object literal Object.entries({ 'a': 'A', 'b': 'B' }); // [["a","A"],["b","B"]] // String Object.entries('david') // [["0","d"],["1","a"],["2","v"],["3","i"],["4","d"]]
Object.entries
segue a mesma ordem que o for...in
seria.
Object.values
Object.keys
tem sido imensamente útil para mim, então também fiquei animado ao ver o Object.values
apresentado:
// Object literal Object.values({ 'a': 23, 'b': 19 }) // [23, 19] // Array-like object (order not preserved) Object.values({ 80: 'eighty', 0: 1, 1: 'yes' }) // [1, 'yes', 'eighty'] // String Object.values('davidwalsh') // ["d", "a", "v", "i", "d", "w", "a", "l", "s", "h"] // Array Object.values([1, 2, 3]) // [1, 2, 3]
Object.values
fornece entradas de valores em literais de objetos, matrizes, strings etc.
Array.prototype.includes
Array.prototype.includes
é um pouco como o indexOf
mas, em vez disso, retorna um true
ou false
em vez do índice do item:
['a', 'b', 'c'].includes('a') // true, not 0 like indexOf would give ['a', 'b', 'c'].includes('d') // false
indexOf
tem sido usado ao longo dos anos para detectar a presença de itens em uma matriz, mas o índice `0` pode levar a falsos negativos se não for codificado corretamente. Fico feliz que o JavaScript tenha adicionado uma função que retorna exatamente o que precisamos: uma resposta positiva ou negativa!
Exponenciação
O JavaScript introduziu um método abreviado de exponenciação:
// 2 to the power of 8 Math.pow(2, 8) // 256 // ..becomes 2 ** 8 // 256
Essa nova sintaxe faz o mesmo que o Math.pow
com menos código!
Vírgulas à direita
Tenho idade suficiente para me lembrar dos dias em que uma vírgula à direita explodia completamente seu código JavaScript no Internet Explorer 6. O JavaScript agora acomoda a vírgula extra:
let myObj = { a:'b', b: 'c', } // No error! let myArr = [1, 2, 3, ] // No error! [1, 2, 3,].length // 3 [1, 2, 3, , , ].length // 5
O caso do comprimento do array é algo que o senhor deve ter em mente. O ESLint tem um comma-dangle
que o senhor pode usar para garantir que o uso da vírgula seja consistente.
Bônus: async
/ await
Obviamente async
e await
, o novo método de lidar com tarefas assíncronas, não é uma adição “minúscula”, mas certamente é incrível! Leia meu guia de async e await para transformar seu inferno de callbacks em uma abordagem mais elegante e de cima para baixo do código assíncrono!
A cada iteração do JavaScript, estamos resolvendo os problemas que tínhamos com a falta de funcionalidade ou com o uso inadequado de outras funções. Qual é a sua adição recente favorita ao JavaScript?