我读过一本关于函数声明的书。代码是这样的。
function outer(){
assert(typeof inner === "function", "inner() in scope before declaration");
function inner(){}
assert(typeof inner === "function", "inner() in scope after declaration");
assert(typeof window.inner === "undefined", "inner() undefined in global space")
}
当测试运行时,所有三个语句都被断言为 true,表明 inner() 函数在其声明之前存在于范围内。我关于 javascript 的概念是脚本是逐行执行的,并且应该在调用之前声明函数。
问题是内部函数在声明之前如何存在于作用域中?