命名的Javascript功能的表达(Javascript named function as an

2019-06-24 05:57发布

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的参考

  1. 上执行d()的函数C在全球范围内,其中不存在变量或属性名为c执行。 但仍然控制台设法登录的C函数定义。
  2. 当我试图c()我有一个引用错误。 [正如我预期]

案例2证明了不存在名为c可用,因此窗口属性,怎么d()管理打印C'S上执行的定义?

是否每个功能在其本地范围内的财产自己的定义?

Answer 1:

是。 命名函数表达式只产生该函数的范围内对应于该函数名的变量。

下面是关于这个问题的一个很好的,但长篇文章: http://kangax.github.com/nfe/

又见ECMAScript的5规范的相关部分 。 它有这个特定的音符。



文章来源: Javascript named function as an expression