У меня есть немного понимания об области JavaScript - о том, что язык имеет область функционального уровня, а объявления переменных и функций поднимаются в верхней части их сдерживающей области. Тем не менее, я не могу понять, почему следующие два фрагмента кода регистрируют различные значения:Путаница с областью определения JavaScript
Это регистрирует значение 1 в консоли:
var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
console.log(a);
и загадочно, это входит 10:
var a = 1;
function b() {
a = 10;
return;
}
b();
console.log(a);
Так что же происходит под капотом?
['use strict'] (http://stackoverflow.com/questions/1335851/) запретил бы объявление функции, как в первом примере, так что это, вероятно, очень плохая идея для начала. – transistor09
Интересно, но это больше похоже на проблему дизайна. –