2013-04-04 21 views
0

我可以問爲什麼有時我們創建了一個功能,我們結束了一個分號後,有時不時應該和我的時候不應該把分號功能的JavaScript

function test(){ 

}; 

function test(){ 

} 
+1

Possbile重複:http://stackoverflow.com/questions/444080/do-you-recommend-using-semicolons-after-every-statement-in-javascript http://stackoverflow.com/questions/2717949/javascript當我應該使用分號後捲曲大括號 – karthick 2013-04-04 11:43:26

+0

你可以找到答案在這stackoverflow帖子http://stackoverflow.com/questions/2717949/javascript-when-should-i-use- a-semicolon-after-curly-braces http://stackoverflow.com/questions/444080/do-you-recommend-using-semicolons-after-every-statement-in-javascript http://stackoverflow.com/questions/ 1834642 /在javascript中使用分號後的每個函數的最佳做法 – Sano 2013-04-04 11:42:10

回答

1

取決於你如何申報功能。在http://javascriptcompressor.com/

var test = function(){ 

} 

a = 10; 

var myfunc = function() {}; // use semicolon 

function myfunc() {} // don't use semicolon 
+1

在這種情況下,第一個分號不是必需的。 – Esailija 2013-04-04 11:50:08

+0

這不是必須的,但你應該總是在(函數)表達式之後加分號。 – 2013-04-04 11:54:56

+0

我知道這不是必要的,但我總是試着教人們最好的做法。如果他放棄分號,他遲早會結束一個SyntaxError。因爲它很重要,所以最好以正確的方式學習*。事實上,如果你「學習」了兩種方式,如果你遇到過SyntaxError,實際上很難調試,因爲你已經知道兩者都是正確的。 – 2013-04-04 11:57:52

0

校驗壓縮下面的代碼及其似var test=function(){}a=10;,這是SyntaxError

它不會像

function test(){ 

} 

壓縮碼用於聲明函數的一個問題function test(){}a=10;有效一個

+0

可以說這是壓縮機的錯,而不是程序員的錯。壓縮機不應使有效代碼無效。 – 2013-04-04 12:01:40

0

要將答案置於上下文中,您需要處理兩個方案。

  1. 函數聲明 - 顯式聲明的函數這樣的:

    function someFunction(){ 
        // some code 
    } 
    
  2. 函數表達式 - 聲明函數作爲這樣一個表達:

    var someFunction = function(){ 
        // some code 
    }; 
    

注意只有你在第二種情況下需要分號。當涉及函數提升的概念時,區別很重要。

函數提升基本上意味着您必須考慮您希望在運行時您的函數「可見」(執行上下文)的哪個點。情況1使該功能在腳本中的任何地方都可見,這意味着無論您在腳本中聲明瞭哪個功能,都可以隨時調用它。該函數在執行上下文中提升得更高。另一方面,情況2不會發生這種情況,因此只能在已聲明的行的下面調用該函數。

相關問題