我试图通过以下测试代码巩固我对JavaScript中的闭包/作用域的理解:
var globalM = 1;
function firstFx() {
function secondFx () {
console.log(globalM + 1);
}
secondFx();
}
firstFx();
我知道firstFx可以访问globalM,因为它在其范围内。但是我的内部函数secondFx怎么也可以访问globalM变量呢?它达到了2级,我认为这不可能吗?然而,2的结果是登录到控制台。
答案 0 :(得分:1)
您的第二个函数可以访问它,因为该变量是全局变量。这意味着所有范围都可以访问它。
任何范围都可以访问全局或更高级别声明的任何内容。例如,在函数中,内部函数也可以访问外部函数中声明的任何变量。
答案 1 :(得分:0)
范围界定水平没有限制,一直到全球范围。
函数中代码的范围是创建函数的范围加上自己的范围。