2014-09-12 24 views
0

我有兩個函數的例子如下在覆蓋了功能未申報的JavaScript變量使用

function call1() { 
    variable = "test string"; 
} 

function call2() { 
    variable = responseFromAJAX(); 

    document.title = variable; 

    setTimeout(function() { call2(o); }, 1000); 
} 

如果有反正未申報的變量「變量」可以通過函數重載?即使「變量」沒有被聲明在函數的範圍之外?

非常感謝

+0

的'var'關鍵字是你的朋友。 – Pointy 2014-09-12 12:55:55

+2

確實。你應該總是使用'var'來定義變量並避免全局聲明,因爲它們可以創建真正煩人的'小'錯誤... – 2014-09-12 13:00:34

回答

4

如果有反正未申報的變量「變量」可以通過函數重載?

是的。除非您處於嚴格模式,否則分配給未聲明的變量會隱式創建一個全局變量(我稱之爲The Horror of Implicit Globals)。所以任何一個函數都可以寫入它。幸運的是,嚴格模式阻止了隱式全局變量。

+1

該鏈接是一篇很好的文章,清楚地解釋'globals'..謝謝。 – sri 2014-09-12 14:31:13

3

是的,如果你沒有聲明它是一個類型var它將被視爲一個全局變量。 這與聲明全局變量相同。

那麼它將作爲

function call1() { 
     variable = "test string"; 
    } // If you call this method variable will have the value as "test String" 

function call2() { 
    variable = responseFromAJAX(); 

    document.title = variable; 

    setTimeout(function() { call2(o); }, 1000); 
} // If you call this method variable will have the value will be the value from AJAX 
相關問題