Сегодня я был совершенно удивлен, когда увидел, что глобальная переменная имеет неопределенное
значение в определенном случае.
Пример:
var value = 10;
function test() {
//A
console.log(value);
var value = 20;
//B
console.log(value);
}
test();
Выдает
undefined
20
Вот, почему движок JavaScript считает глобальное значение как undefined
. Я знаю, что JavaScript - интерпретируемый язык. Как он может учитывать переменные в функции?
Это подводный камень движка JavaScript?
Я сталкивался с той же проблемой даже с глобальными переменными. Моей проблемой, я обнаружил, была глобальная переменная, Не сохраняются между файлами HTML.
<script>
window.myVar = 'foo';
window.myVarTwo = 'bar';
</script>
<object type="text/html" data="/myDataSource.html"></object>
я попытался сослаться на myVar и myVarTwo в загруженном файле HTML, но получил неопределенную ошибку. Длинная короткая история/день, я обнаружил, что мог сослаться на использование переменных:
<!DOCTYPE html>
<html lang="en">
<!! other stuff here !!>
<script>
var myHTMLVar = this.parent.myVar
/* other stuff here */
</script>
</html>