Ho cercato di eseguire il codice qui sotto in Firefox V30.0 Scratchpad:ReferenceError non sta gettando quando si accede a 'lasciare' variabile prima dichiarazione
function do_something() {
console.log(foo); // ReferenceError
let foo = 2;
}
do_something();
Il comportamento previsto è che il mio programma dovrebbe buttare errore di riferimento, perché Sto accedendo a una variabile let
prima della sua dichiarazione. Ma, io non sto ottenendo il comportamento previsto, il programma ha ottenuto eseguita e il risultato è il seguente
undefined
si può spiegare a me, perché è comportando così?
Per quanto ne so, le variabili dichiarate "let' sono ancora state issate, come' var', solo nella parte superiore del blocco, non nella funzione. –
@JamesThorpe - Le dichiarazioni vengono issate, ma a causa della zona morta temporale qualsiasi tentativo di fare riferimento a esse prima dell'inizializzazione deve essere eseguito. –
è possibile eseguire il codice in "modalità rigorosa" e vedere se qualcosa cambia, a mio parere il risultato atteso è quello di tirare ... il sollevamento variabile dovrebbe avvenire solo se si utilizza la parola chiave var ... – Hitmands