【发布时间】:2012-05-16 02:10:41
【问题描述】:
Javascript 代码
var d = function c() { console.log(c); };
d(); // function c() { console.log(c); };
c(); // Reference Error
我理解变量提升的概念,其中变量声明和函数定义被提升到现有范围的顶部。函数表达式中的函数定义也不会被提升。
所以,上面将是
var d;
d = function c() { console.log(c); };
d();
c();
因此 d 是对命名函数 c 的引用
- 在执行
d()时,函数c 在全局范围内执行,其中没有名为c 的变量或属性。但是控制台仍然设法记录c的函数定义。 - 当我尝试
c()时,我得到一个引用错误。 [如我所料]
案例 2 证明没有名为 c 的窗口属性可用
那么,d() 是如何在执行时打印出 c 的定义的呢?
是否每个函数在其本地范围内都有自己的定义作为属性?
【问题讨论】:
标签: javascript function scope