是否有任何理由爲什麼這樣的東西不起作用?javascript默認功能值
var classReplace = function(object, newClass, originalClass = "") {
//do stuff
}
我不斷收到一個「未捕獲的SyntaxError:意外的標記=」錯誤,因爲我在
originalClass = ""
部分添加
是否有任何理由爲什麼這樣的東西不起作用?javascript默認功能值
var classReplace = function(object, newClass, originalClass = "") {
//do stuff
}
我不斷收到一個「未捕獲的SyntaxError:意外的標記=」錯誤,因爲我在
originalClass = ""
部分添加
您可以檢查,看看是否originalClass定義如果沒有的話分配它「」,
var classReplace = function(object, newClass, originalClass) {
if(typeof(originalClass) === "undefined") originalClass = "";
//do stuff
}
正如Pointy所說,以這種方式設置默認參數值isn 「T可能在JavaScript中,
你可以,但是,通過檢查所述參數是undefined
實現類似的結果,如果是這樣,將其設置等於您所需的默認值:
var classReplace = function(object, newClass, originalClass) {
if (originalClass === undefined) originalClass = "";
//do stuff
}
雖然這並未」在開箱即用的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-Dash的partialRight
方法。 (link)
用法:
var originalFunction = function(a,b) { return a + b; },
functionWithDefaultValues = _.partialRight(originalFunction, 1, 2);
筆記:
_.partial
,出於某種原因,並沒有相同的行爲。_.partialRight
附加右邊的值,所以在上面的b
的默認值是1
。希望這會有所幫助。
它不會工作,因爲JavaScript沒有這樣的語言功能(目前無論如何)。 – Pointy
它將在6到8周內到達。 –
ES6會擁有它:http://wiki.ecmascript.org/doku.php?id=harmony:parameter_default_values。 *「有沒有什麼理由爲什麼這樣的東西不能工作?」*因爲語言不允許。 –