2015-05-18 69 views
0

我應該添加一個;將一個函數放入一個變量後的? 這段代碼對不對?我應該添加一個;將函數放入變量後?

pj.RemoveProjectTask = function (e, scope) { 
    e.preventDefault(); 
    scope.remove(); 
}; 

pj.ToggleProjectTask = function (e, scope) { 
    e.preventDefault(); 
    scope.toggle(); 
}; 

或此代碼:

pj.RemoveProjectTask = function (e, scope) { 
    e.preventDefault(); 
    scope.remove(); 
} 

pj.ToggleProjectTask = function (e, scope) { 
    e.preventDefault(); 
    scope.toggle(); 
} 
+0

http://stackoverflow.com/questions/444080/do-you-推薦使用分號後在每個語句中的JavaScript –

回答

5

您應該添加一個分號來防止這種邊緣情況:

var foo = function(){ 
    // your code here 
} 

(x=42); 

在這種情況下,JavaScript的實際調用的函數並在42傳遞作爲參數,並設置foo給函數的返回值。

這已經咬傷了我的過去,當構建過程中會連接和minifies多個JavaScript文件一起,和一個文件中的函數賦值像var foo = function(){ ... }沒有分號結束,下一個文件,關閉基於代碼開始像(function(){ ... })(window);

1

在JavaScript中,每個有效的(函數調用,變量的修改,等等)行是可選的,除非你想有在同一行上的多個指令之後添加一個分號在這種情況下,分號是必需的:

function something() 
{ 
    do_a_thing(); do_another_thing(); ... 
} 

但是,這可以很容易地編寫像這樣:

function something(); 
{ 
    do_a_thing() // Can opt not to have a semicolon 
    do_another_thing(); // Can opt to have a semicolon 
} 

在大多數情況下,它是由你和你的首選風格

+0

你在開玩笑嗎?它是**可選**嗎? –

+0

是的,它是可選的 – Levi

+2

@Mohamadshiralizadeh它被稱爲自動分號插入,它是Javascript的一個可怕特性[如果你依賴它可能會讓你陷入麻煩](http://bonsaiden.github.io/JavaScript - 花園/#core.semicolon)。最好始終明確地添加它們。 – GregL

0

;是在JavaScript中可選的,但如果你要遵循jslintjshint標準,你應該把;在每個語句的結束。

+0

不是在每一行的末尾。在每個*聲明的末尾*。即使這樣也不正確,因爲,例如,獨立函數foo(){...}是一個完整的語句,不需要分號。 – Amadan

相關問題