2016-04-04 5 views
5

Sto imparando ES6, quindi, per favore, per favore.TypeError: redeclaration of let error in Firebug console se si esegue il codice ES6

Di seguito è riportato il codice che funziona correttamente, se si fa clic sul pulsante Esegui una volta, ma al secondo viene visualizzato l'errore TypeError: redeclaration of let myArr.

Fammi sapere su questo strano (potrebbe essere) comportamento.

let myArr = [34,45,67,2,67,1,5,90]; 
let evenArr = []; 
let oddArr = []; 
myArr.forEach(x => { 
    if (x % 2 === 0) { 
     evenArr.push(x); 
    } else { 
     oddArr.push(x); 
    } 
}); 

console.log(evenArr); 
console.log(oddArr); 

Errore -

redelaration of let error

risposta

7

ES6 does not allow di fare questo (redeclaring una variabile di blocco, con ambito nello stesso ambito):

let foo; 
let foo; 

E dal momento che la console mantiene lo stato fino a quando non ricarichi la pagina (sei nel contesto della pagina dopo tutto), la prima volta che r un si definisce myArr quindi non è possibile ridefinirlo nella seconda esecuzione.

+0

Ok, ma perché se cambio 'let' a' var' e premi run ancora sta visualizzando l'errore (anche se durante l'aggiornamento se ne va) – Nesh

+0

'let' ha definito la variabile all'interno del blocco. Sarebbe molto strano (e molto probabilmente non previsto) se si fosse in grado di sollevarlo nell'ambito della funzione ridefinendolo usando 'var'. – ThiefMaster

+1

Ho la stessa domanda. Ho letto la tua risposta e ho fatto un po 'di ricerche su "let", ma sto ancora avendo difficoltà a capirlo. Da quello che hai detto, ha ottenuto l'errore definendo la variabile con 'let' e quindi cambiandola in' var'. Tuttavia, nel mio caso sono partito dall'inizio con 'var' eppure sto ancora ricevendo lo stesso errore anche se non sto usando 'let'. –

Problemi correlati