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