Вопрос: Что бы утешатьсяconsole.log() не работает, как ожидалось
var foo = 'outside';
function logIt() {
console.log(foo);
var foo = 'inside';
}
logIt();
Ответ: undefined
Может кто-то объяснить, почему это происходит.
Вопрос: Что бы утешатьсяconsole.log() не работает, как ожидалось
var foo = 'outside';
function logIt() {
console.log(foo);
var foo = 'inside';
}
logIt();
Ответ: undefined
Может кто-то объяснить, почему это происходит.
var
заявления подняты.
Внутри функции имеется только одна переменная: одна создана на линии var foo = 'inside';
.
Когда вы регистрируете его значение, вы делаете это до выполнения назначения, поэтому оно равно undefined
.
Вы не можете получить доступ к глобальной переменной с тем же именем из функции, потому что вы замаскировали ее, объявив локально скопированную переменную с тем же именем.
Именно поэтому я уверен, что правильно понимаю это - функция, которую он написал, такая же: function logIt() {var foo; console.log (Foo); foo = "внутри"; } – millerbr
@millerbr - Для всех практических целей. Да. – Quentin
Спасибо @Quentin – user3516328
var foo = 'outside';
function logIt() {
var foo;
console.log(foo);
foo = 'inside';
}
logIt();
Это как сценарий interpreted.So дает undefined
Это называется top-hoisting.
В этом случае повторного декларации foo
это произойдет, которые установить его на undefined
var foo = 'outside';
function logIt() {
console.log(window.foo);
var foo = 'inside';
}
logIt();
функция логит предполагает, что foo
находится внутри его объема. Чтобы использовать глобальную переменную, вам необходимо использовать window.variable_name
Поскольку 'foo' также определяется в области' logIt' и поднимается вверх. –