Deklaracja zmiennych i stałych w JavaScript w ES6 ZTJ ES2015 i późniejszych

in polish •  6 years ago 

js.png

ES6

ES6 – zachowuje kompatybilność, zatem wszystko opisane w artykule Deklaracja zmiennych i stałych w JavaScript przed ES6 jest nadal aktualne i możliwe.

ES6 wprowadza nowy sposób zapisu zmiennych i stałych. ES6 rozbudowuje deklaracje zmiennych i stałych, dodając deklaracje zmiennych przy użyciu instrukcji let oraz stałych ze słowem kluczowym const.

let

Zmienne deklarowane przy użyciu instrukcji let – mają zasięg blokowy, nie są można ich deklarować ponownie.

Przykład deklaracji i zasięgu

{
  let magicLetNumber = 12;
  console.log(magicLetNumber);
}
console.log(magicLetNumber);
//12
//ReferenceError: magicLetNumber is not defined

Odwoływanie się do zmiennej która jest deklarowane z let przed miejsce zapisania instrukcji let powoduje zgłoszenie błędu. Do momentu wywołania instrukcji let nie możemy wcześniej wykorzystywać zmiennej letNumber, jest ona zadeklarowane ale istnieje w tzw. tymczasowej martwej strefie a.k.a TDZ, a jakiekolwiek odwołania do niej powodują w przeciwieństwie do var zgłoszenie błędu, przykład poniżej.

{
  console.log(varNumber); //zmienna zadeklarowana z var istnieje i znajduje się w okalającym zasięgu funkcyjnym, jeśli go brak to globalnym
  console.log(letNumber); //error TDZ

  let letNumber = 12;
  var varNumber = 12;

}
//undefined
//ReferenceError: magicLetNumber is not defined

Ponowna deklaracja: var vs let

var varNumber1 = 12;
var varNumber1 = 13;
console.log(varNumber1);
//12
let letNumber1 = 14;
let letNumber1 = 15; //error
console.log(letNumber1);
//Uncaught SyntaxError: Identifier 'letNumber1' has already been declared

Zmiana wartości

let letNumber2 = 17;
letNumber2 = 18;
console.log(letNumber2);
//18

const

Stałe - również mają zasięg blokowy. Są to stałe referencje, które wyeliminować mają możliwość zmiany referencji. Tak więc jeśli są zadeklarowane z wartością typu prostego nie możemy zmienić ich wartości ani zadeklarować ponownie. W przypadku gdy są referencją do obiektu nie możemy zmienić referencji, ale możemy zmieniać właściwość wewnątrz obiektu.

Przypisanie

const CONST_NUMBER = 12;
CONST_NUMBER = 12; //Uncaught TypeError: Assignment to constant variable.

Ponowna deklaracja

const CONST_NUMBER = 12;
const CONST_NUMBER = 12; //Uncaught SyntaxError: Identifier 'CONST_NUMBER' has already been declared.

Możliwość zmiany właściwości obiektu

const CONST_OBJECT = {}
CONST_OBJECT.a = 1;
console.log(CONST_OBJECT);
//{a: 1}
Spostrzeżenie.

Ogólnie wykonując deklaracje pożądane jest deklarowanie w następującym kierunku, jeśli to możliwe przy użyciu const, później let a na samym końcu wykorzystywanie var.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Congratulations @cybor0! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

Award for the number of upvotes received

Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:

SteemitBoard Ranking update - Resteem and Resteemed added

Support SteemitBoard's project! Vote for its witness and get one more award!