有什么理由说这样的事情不起作用吗?
var classReplace = function(object, newClass, originalClass = "") {
//do stuff
}
我一直得到一个"未捕获的SyntaxError:意外的令牌="错误,因为我添加了
originalClass = ""
部分
答案 0 :(得分:2)
您可以检查是否已定义originalClass,如果未定义,则将其指定为“”,
var classReplace = function(object, newClass, originalClass) {
if( typeof(originalClass) === "undefined" ) originalClass = "";
//do stuff
}
答案 1 :(得分:1)
正如Pointy所说,在JavaScript中设置默认参数值是不可能的,
但是,您可以通过检查所述参数是否为undefined
来获得类似的结果,如果是,则将其设置为所需的默认值:
var classReplace = function(object, newClass, originalClass) {
if (originalClass === undefined) originalClass = "";
//do stuff
}
答案 2 :(得分:0)
虽然JS在开箱即用中并不存在,但我可以想到除了其他答案之外的两个选项,它们实际上模仿了您正在寻找的功能。
一个。的的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还有很多其他很酷的功能,可能值得一看。
湾 Lo-Dash 的partialRight
方法。 (link)
用法:
var originalFunction = function(a,b) { return a + b; },
functionWithDefaultValues = _.partialRight(originalFunction, 1, 2);
备注:
_.partial
由于某种原因,没有相同的行为。_.partialRight
会附加右侧的值,因此在上文中,b
的默认值为1
。希望这有帮助。