Немного смущенный этим Красноречивым Javascript explanation параметров и областей применения.javascript параметры и области применения
В нем указано, что переменные, объявленные вне функции, являются глобальными, переменные, объявленные внутри функции, являются локальными, а переменные, объявленные внутри функции без предшествующего var
, по существу ссылаются на глобальную переменную с аналогичным именем. Хорошо. В этом есть смысл. Но тогда этот код бросает меня за цикл.
var x = "outside";
var f1 = function() {
var x = "inside f1";
};
f1();
console.log(x);
// → outside
var f2 = function() {
x = "inside f2";
};
f2();
console.log(x);
// → inside f2
логофф значение х в первой функции должен результат «внутри f1», так как эта переменная была объявлена локально. И эта вторая функция (заключающаяся в том, что она содержит переменную, объявленную без var
и, таким образом, ссылается на глобальную, объявленную вверху) должен привести к «наружу». Но ... в любом случае это не так.
Я получаю суть того, что должно произойти. Но если я не читаю неправильно, кажется, что это противоположность тому, что описывает автор. Это не может быть опечаткой.
Я знаю, что принял это как ответ вчера вечером, но ... что случилось с объявлением неявного глобального? Я полагаю, что это делает труднее найти источник любых потенциальных ошибок, возникающих в результате этого. Поскольку глобальная переменная не определена сверху, как другие * обычные * глобальные переменные. Правильно? – sabaeus
Нм, просто прочитайте свою ссылку на неявные глобальные значения. – sabaeus
@sabaeus Я добавил и собственные мысли. – jdphenix