Удивлен, что глобальная переменная имеет неопределенное значение в JavaScript

Сегодня я был совершенно удивлен, когда увидел, что глобальная переменная имеет неопределенное значение в определенном случае.

Пример:

var value = 10;
function test() {
    //A
    console.log(value);
    var value = 20;

    //B
    console.log(value);
}
test();

Выдает

undefined
20

Вот, почему движок JavaScript считает глобальное значение как undefined. Я знаю, что JavaScript - интерпретируемый язык. Как он может учитывать переменные в функции?

Это подводный камень движка JavaScript?

79
задан ubuntugod 29 September 2016 в 08:25
поделиться

1 ответ

Я сталкивался с той же проблемой даже с глобальными переменными. Моей проблемой, я обнаружил, была глобальная переменная, Не сохраняются между файлами 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>
0
ответ дан 24 November 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: