2012-05-07 23 views
2

JavaScript代碼的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是在全球範圍內,其中不存在變量或執行到名爲函數c

  1. 上執行d()基準名爲c的屬性。但仍然控制檯管理記錄c的功能定義。
  2. 當我試着c()我有一個參考錯誤。 [如我所料]

案例2證明了不存在名爲c可 那麼,爲什麼d()管理打印上執行的C的定義窗口屬性?

是否每個函數在其本地範圍中都有自己的定義作爲屬性?

回答