Итак, я читаю это article о JavaScript Лексический обзор, и автор указывает, что «JavaScript не является действительно статическим». Затем он «доказывает» это в следующем примере:Означает ли этот пример, что JavaScript не является полностью статическим?
var count = 5;
function tellCount() {
console.log(count);
};
tellCount(); //prints 5
count = 7;
tellCount(); //prints 7;
Что мне здесь не хватает? Он поместил переменную count в глобальное пространство имен как пять, вызывает метод, который ссылается на глобальную переменную и печатает пять, затем изменяет глобальную переменную на семь и снова вызывает метод. Если я не ошибаюсь, изменение глобальной переменной и повторное вызов метода, использующего переменную, сделают это на любом языке с статическими областями.
Действительно ли автор доказывает, что JavaScript не является действительно статическим?
Примечание: Я знаю, что eval в JavaScript вводит форму динамического объема в JS, но меня больше интересует доказательство/опровержение того, что написал этот автор.
См. Http://stackoverflow.com/questions/958983/are-variables-static-or-dynamically-scoped-in-javascript – jfriend00
Я думаю, что автор путается между областью видимости и значением переменных. В примерах не отображается изменяющаяся область видимости, только значение переменных в этой области может меняться и что переменные могут находиться в нескольких цепочках цепочки. – RobG