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 的定义?
每个函数在其本地范围内都有自己的定义作为属性吗?