Šest malých, ale úžasných funkcí ES7 + ES8

Vývoj nových funkcí pro základní jazyk JavaScript se za posledních pět let skutečně zlepšil, částečně díky tomu, že rámce JavaScriptu posouvají limity a dokazují, jak důležitá může být daná funkce. Mé předchozí příspěvky ES6, Šest malých, ale úžasných funkcí ES6 a Šest dalších malých, ale úžasných funkcí ES6, zdůrazňovaly tucet vynikajících funkcí, které byly přidány do JavaScriptu, aby nám usnadnily život – a rozhodně ano. Pojďme se podívat na některé „malé“ funkce, které nám ES7 a ES8 přinesly!

String.prototype.padStart /padEnd

padStart a padEnd nám umožňují vyplnit daný řetězec libovolným textem dle našeho výběru, abychom zajistili, že řetězec odpovídá dané délce:

// 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'

Jedno použití padStart může zahrnovat předčíslí před telefonní číslo, pokud zadání uživatele nemá správnou délku. padEnd lze použít pro desetinnou přesnost.

Object.entries

Object.entries nám umožňuje získat vyčíslitelné dvojice vlastností objektu ve formátu pole ([klíč, hodnota]):

// 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 postupuje ve stejném pořadí jako for...in by.

Object.values

Object.keys byl pro mě nesmírně užitečný, takže jsem byl také nadšený, když jsem viděl Object.values představeno:

// 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 poskytuje položky hodnot v objektových literálech, polích, řetězcích atd.

Array.prototype.includes

Array.prototype.includes je trochu jako indexOf ale místo toho vrátí true nebo false hodnota namísto indexu položky:

['a', 'b', 'c'].includes('a') // true, not 0 like indexOf would give
['a', 'b', 'c'].includes('d') // false

indexOf byl v průběhu let používán k detekci přítomnosti položek v poli, ale index `0` může vést k falešným negativům, pokud není správně kódován. Jsem rád, že JavaScript přidal funkci, která vrací přesně to, co potřebujeme:kladnou nebo zápornou odpověď!

Umocnění

JavaScript zavedl zkrácenou metodu umocňování:

// 2 to the power of 8
Math.pow(2, 8) // 256

// ..becomes
2 ** 8 // 256

Tato nová syntaxe dosahuje stejného výsledku jako  Math.pow s méně kódem!

Čárky na konci

Jsem dost starý na to, abych si pamatoval doby, kdy koncová čárka zcela rozložila váš kód JavaScript v aplikaci Internet Explorer 6.  JavaScript nyní pojme čárku navíc:

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

Je třeba mít na paměti případ délky pole. ESLint má comma-dangle pravidlo, které můžete použít k zajištění konzistentního používání čárky.

Bonus:  async / await

Zřejmě async a await , nový způsob zpracování asynchronních úloh, není žádný "malý" doplněk, ale rozhodně je úžasný! Přečtěte si mého průvodce asynchronním a čekám na přeměnu vašeho pekla zpětného volání na elegantnější přístup k asynchronnímu kódu shora dolů!

S každou iterací JavaScriptu řešíme problémy, které jsme měli s nedostatečnou funkčností nebo s bastardním používáním jiných funkcí. Jaký je váš oblíbený nedávný přírůstek do JavaScriptu?