我有一个 Javascript 主文件,它被一个立即调用的闭包包围(以免污染“全局”:
(function () {
"use strict";
var closureVariable = [];
...
}());
从函数头中删除变量时,我犯了一个简单的、令人头疼的编码错误,以至于我的代码使用逗号而不是分号:
function fred () {
var i,
closureVariable = [1,2,3,4];
confused();
}
function confused () {
console.log(closureVariable); // Prints '[]'
}
当然,“var i”行上缺少的分号是问题所在。但是我认为应该发生的行为是我现在本地定义的变量 'closureVariable' 应该已经隐藏了更高级别的范围定义,并且我的本地定义变量的值应该可以用于范围链中较低的函数(也就是说,函数'confused'应该打印出'[1,2,3,4]';
我在这里对 Javascript 范围链有什么不了解的地方?