Oggi mi imbatto in un bizzarro bug JS, che funziona con const
all'interno di un blocco try/catch, e vorrei capire meglio che cosa sta causando. sguardoJavaScript: definire una costante all'interno di try/catch con la modalità strict
Let ad un esempio di codice, che vale più di mille parole:
try {
const FOO = 'bar';
console.log('inside:', FOO);
} catch (e) {}
console.log('outside:', FOO);
Questo registrerà:
inside: bar
outside: bar
Se si passa a "modalità rigorosa", anche se:
Ora lo stesso codice genera un errore:
ReferenceError: FOO is not defined
Se cambiamo const
con var
però:
'use strict';
try {
var foo = 'bar';
console.log('inside:', foo);
} catch (e) {}
console.log('outside:', foo);
Poi tutto funziona di nuovo bene, anche in "rigorosa modalità":
inside: bar
outside: bar
Qualcuno può aiutarmi a capire il motivo per cui il const
l'assegnazione non funziona all'interno di un blocco try/catch in "strict mode"?
Grazie!
Confronta 'const' con' let', non 'var' –