是否有任何理由为什么这样的东西不起作用?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。 *“有没有什么理由为什么这样的东西不能工作?”*因为语言不允许。 –