duc*_*cin 5 javascript function
我正在关注John Resig的《 JS忍者的秘密》幻灯片,但发现了一些我不清楚的东西。以下代码定义了一个命名函数表达式:
var ninja = function myNinja(){
console.log(myNinja); // function myNinja() {...}
};
myNinja; // undefined
Run Code Online (Sandbox Code Playgroud)
如我所见,在当前作用域(假设它是全局范围)中,ninja是保存对命名函数的引用的变量myNinja。ninja变量在范围内是可以访问的-很明显,但是myNinja在范围内不可以访问(但是可以在其自己的函数中访问)。怎么来的?
如果我定义一个函数(不使用函数表达式,而是使用函数声明):
function Cheese() {
console.log(Cheese);
}
Run Code Online (Sandbox Code Playgroud)
那么就可以在当前范围内访问它。我知道这就像那样-但是有人可以解释为什么吗?
想象一下,当你简单地定义一个函数(cheese)时,你告诉当前作用域 - “我想让你知道这个函数,它的名字是cheese。当你使用 var ninja 时,你现在正在处理 ninja 作用域,告诉它基本上是一样的。所以现在你的新函数(myNinja)仅在当前(ninja)范围内知道......
| 归档时间: |
|
| 查看次数: |
287 次 |
| 最近记录: |