Ho una buona conoscenza dell'ambito dell'ambito JavaScript - che il linguaggio ha un ambito a livello di funzione e le dichiarazioni di variabili e funzioni sono issate in cima al loro ambito di contenimento. Tuttavia, non riesco a capire il motivo per cui i due pezzi di codice log valori diversi:Confusione con lo scope JavaScript
Questo registra il valore 1 alla console:
var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
console.log(a);
e misteriosamente, questa registra 10:
var a = 1;
function b() {
a = 10;
return;
}
b();
console.log(a);
Quindi cosa succede sotto il cofano?
['use strict'] (http://stackoverflow.com/questions/1335851/) non consentirebbe di dichiarare una funzione come nel primo esempio, quindi è probabilmente un'idea molto cattiva per cominciare. – transistor09
Interessante, ma è più come un problema di design. –