userName = 'Foo BAR';console.log(userName); // Foo BAR
'use strict';userName = 'Foo BAR'; // ReferenceError: userName is not defined
'use strict';console.log(userName); // ReferenceError: userName is not defined
'use strict';console.log(userName); // ???var userName = 'Foo BAR';
'use strict';console.log(userName); // undefinedvar userName = 'Foo BAR';
'use strict';greetings(); // ???function greetings() {console.log('HI!');}function greetings() {console.log('HELLO!');}
'use strict';greetings(); // HELLO!function greetings() {console.log('HI!');}function greetings() {console.log('HELLO!');}
'use strict';greetings(); // TypeError: greetings is not a function.var greetings = function () {console.log('HI!');};greetings(); // HI!var greetings = function () {console.log('HELLO!');};greetings(); // HELLO!
Les variables ne sont accessibles qu'après leur déclaration.
console.log(userName); // ReferenceError: userName is not definedlet userName = 'Foo BAR';
Les variables ne sont accessibles que dans le bloc de code.
if (true) {let userName = 'Foo BAR';}console.log(userName); // ReferenceError: userName is not defined
const
permet de déclarer des variables constantes qui ne peuvent pas être réinitialisées.
const user = {firstName: 'Foo',lastName: 'BAR'}user = null; // TypeError: Assignment to constant variable.
const
n'est pas immutable.
user.firstName = 'John'; // OK!
Il est recommandé de déclarer toutes les variables en const
sauf quand la réutilisation d'une variable s'avère inévitable.
Cela évite de nombreuses erreurs d'inattention difficiles à diagnostiquer.
L'utilisation de const décourage le recyclage maladroit de variables :
const user = {firstName: 'Foo',lastName: 'BAR'}/* 🤢*/user = user.firstName; // TypeError: Assignment to constant variable.