所以我正在阅读这篇关于 JavaScript Lexical scoping 的文章,作者指出“JavaScript 并不是真正的静态”。然后,他通过以下示例“证明”了这一点:
var count = 5;
function tellCount() {
console.log(count);
};
tellCount(); //prints 5
count = 7;
tellCount(); //prints 7;
我在这里想念什么?他将全局命名空间中的count变量设为5,调用引用全局变量的方法并打印出5,然后将全局变量改为7并再次调用该方法。如果我没记错的话,更改全局变量并重新调用使用该变量的方法将在任何静态范围的语言中执行此操作。
作者是否真的证明了 JavaScript 不是真正的静态作用域?
注意:我知道 JavaScript 中的 eval 在 JS 中引入了一种动态范围,但我更感兴趣的是证明/反驳作者所写的内容。