ECMAScript 2017 małe nowości w JS z zeszłego roku

W artykule znajdują się 3 nowości z ECMAScript 2017, poprawiajace jakość  pracy. Dodatkowo jedna z tych nowości lubi pojawiać się  na rozmowach kwalfikacyjnych.

Na początek gwóźdź programu co zwróci konsola:

const tab = [1, 2, 3,,,]
console.log(tab.length);
console.log(tab.toString())

wynik:
console.log(tab.length); //5 //WAT?
console.log(tab.toString()) // 1,2,3,,

Sam dałem się niedawno wpuścić w maliny na rozmowie kwalfikacyjnej, tym przykladem, spodziewałem się o jeden element wiecej w tablicy.

Mechanizm stojacy za tym zachowaniem to Trailing commas.

Powstał by ułatwiac życie programistów, chodzi o to by w momecie pisania kodu, nie musieć za każdym razem usuwać ostatni przecinek(zdarza mi się to niemal codziennie).
Kilka przykladów:

const obj ={
foo:"foo",
bar:"bar",
}
function(
foo,
bar,
good,
 ){}

const hakunaMakata = (timon,pumba,) => `$timon i ${pumba}`

Math.max(101, 20,);

kilka niewłasciwych użyć, które spowodują wyjątki w runtime.

function test(,) {} // SyntaxError: missing formal parameter
(,) => {};       // SyntaxError: expected expression, got ','
test2(,)             // SyntaxError: expected expression, got ','

function f(...p,) {} // SyntaxError: parameter after rest parameter
(...p,) => {}        // SyntaxError: expected closing parenthesis, got ','
const [a, ...b,] = [1, 2, 3];
// SyntaxError: rest element may not have a trailing comma

JSON.parse('[1, 2, 3, 4, ]');
JSON.parse('{"foo" : 1, }');
// SyntaxError JSON.parse: unexpected character

 

Dwie pozostałe nowości to, metody obiektu String:

String.prototype.padEnd()
String.prototype.padStart()

Są użyteczne ponieważ pomagają uzyskać, stringi o równej dlugości.

'100'.padStart(8, "0"); // "00000100"

Idealne do rysowania choinek stringami, drukowanie retro liczników, ogólnie do wyrównywania tekstu w wierszach, bądz wstepnej obróbki przed przycieńciem tekstu.

W kolejnym wpisie chciałbym poruszyć prawdziwy gamechanger, który pojawił się w ECMAScript 2017 czyli funcje asynchroniczne

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *