我正在关注John Resig 的 JS ninja 的秘密幻灯片,我发现了一些我不清楚的东西。以下代码定义了一个命名函数表达式:
var ninja = function myNinja(){
console.log(myNinja); // function myNinja() {...}
};
myNinja; // undefined
正如我所看到的,在当前范围内(假设它是全局的),ninja
是保存对命名函数的引用的变量myNinja
。ninja
变量在范围内是可访问的——这很清楚,但myNinja
在范围内是不可访问的(但在它自己的函数内是可访问的)。怎么来的?
如果我定义一个函数(不是使用函数表达式,而是函数声明):
function Cheese() {
console.log(Cheese);
}
那么它可以在当前范围内访问。我知道这就是这样 - 但有人可以解释为什么会这样吗?