2013-10-04 37 views
3

這是一些代碼,我已經嘗試過JavaScript函數在函數內部自我重寫它如何在後臺工作?

function myFunc(){ 

    alert("3"); 

    myFunc = function(){ 

     alert("something else"); 

    } 


} 

我想了解在JavaScript

當我執行myFunc其警報2和第二,當我執行它提醒"something else"幕後發生了什麼。 當這個myFunc被調用時,場景後面發生了什麼?函數如何從函數內部重寫本身?

回答

5

myFunc位於全局命名空間中,因此您可以重新定義它,這會在您爲myFunc = function() ...分配新函數時發生。

功能是對象,因此可以隨着時間的推移分配新的定義。如果您想阻止該功能再次運行,您甚至可以設置myFunc = undefined;

+1

當我們重新定義了相同的函數內部功能做它的激活對象也保持不變 –

+0

@bernhard爲什麼還要爲此,在同一機構???重新定義.. – Rex

+0

懶惰笑 –

1

您只是第二次重新聲明函數。

在頁面加載,你聲明myFunc()它提醒3.
當您執行myFunc(),你聲明一個新的功能,它提醒「別的東西」;

相關問題