2014-04-07 110 views
0

是否有任何理由爲什麼這樣的東西不起作用?javascript默認功能值

var classReplace = function(object, newClass, originalClass = "") { 
    //do stuff 
} 

我不斷收到一個「未捕獲的SyntaxError:意外的標記=」錯誤,因爲我在

originalClass = "" 

部分添加

+3

它不會工作,因爲JavaScript沒有這樣的語言功能(目前無論如何)。 – Pointy

+0

它將在6到8周內到達。 –

+0

ES6會擁有它:http://wiki.ecmascript.org/doku.php?id=harmony:parameter_default_values。 *「有沒有什麼理由爲什麼這樣的東西不能工作?」*因爲語言不允許。 –

回答

2

您可以檢查,看看是否originalClass定義如果沒有的話分配它「」,

var classReplace = function(object, newClass, originalClass) { 
if(typeof(originalClass) === "undefined") originalClass = ""; 
//do stuff 
} 
1

正如Pointy所說,以這種方式設置默認參數值isn 「T可能在JavaScript中,

你可以,但是,通過檢查所述參數是undefined實現類似的結果,如果是這樣,將其設置等於您所需的默認值:

var classReplace = function(object, newClass, originalClass) { 
    if (originalClass === undefined) originalClass = ""; 
    //do stuff 
} 
0

雖然這並未」在開箱即用的JS中存在,除了其他答案之外,我可以考慮兩個選項,它們實際上模仿了您正在尋找的功能。

a。 的CoffeeScript

在其他很酷的功能,CS支持默認函數值:

var classReplace = (object, newClass, originalClass = "") -> 
console.log(originalClass) 

當然,這只是被解釋爲:

var classReplace = function(object, newClass, originalClass) { 
    if (originalClass == null) { 
    originalClass = ""; 
    } 
    return console.log(originalClass); 
}; 

但還是很高興有可讀性,而像我說過,CS有很多其他很酷的功能,可能值得一看。

b。 Lo-DashpartialRight方法。 (link

用法:

var originalFunction = function(a,b) { return a + b; }, 
    functionWithDefaultValues = _.partialRight(originalFunction, 1, 2); 

jsfiddle

筆記:

  1. _.partial,出於某種原因,並沒有相同的行爲。
  2. _.partialRight附加右邊的值,所以在上面的b的默認值是1

希望這會有所幫助。