2014-04-07 101 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

希望这会有所帮助。