我如何在Javascript中声明可选的函数参数?
可能重复:
有没有更好的方法来在Javascript中做可选的函数参数?
我可以声明默认的参数吗?
function myFunc( a, b=0) { // b is my optional parameter } 在JavaScript中。
简单:
 function myFunc(a,b) { b = b || 0; // b will be set either to b or to 0. } 
 只要你明确地通过的所有值都是真的,这就行得通了 。 不符合MiniGod评论的值: null, undefined, 0, false, '' 
在函数实际启动之前,查看JavaScript库对可选input进行一系列检查是很常见的。
更新:使用ES6,现在是语言的一部分: http : //es6-features.org/#DefaultParameterValues使用ES6,看起来像这样:
 function myFunc(a, b = 0) { // function body } 
 请记住,ES6检查值与undefined而不是对真实性(所以只有真正的未定义的值得到默认值 – 像null这样的falsy值不会默认)。 
更新
有了ES6,就可以完全按照您所描述的方式进行操作。 在文档中可以find详细的说明。
老答案
JavaScript中的默认参数主要有两种实现方式:
 function myfunc(a, b) { // use this if you specifically want to know if b was passed if (b === undefined) { // b was not passed } // use this if you know that a truthy value comparison will be enough if (b) { // b was passed and has truthy value } else { // b was not passed or has falsy value } // use this to set b to a default value (using truthy comparison) b = b || "default value"; } 
 expression式b || "default value"  b || "default value"评估b的值AND存在性,如果b不存在或者是falsy,则返回"default value"的值。 
另类声明:
 function myfunc(a) { var b; // use this to determine whether b was passed or not if (arguments.length == 1) { // b was not passed } else { b = arguments[1]; // take second argument } } 
 函数内部有特殊的“数组” arguments , 它包含从索引0到N - 1 (其中N是传递的参数数目)的所有参数。 
这通常用于支持未知数量的可选参数(相同types); 但是,陈述预期的参数是首选!
进一步考虑
 尽pipe从ES5开始, undefined是不可写的 ,但有些浏览器并不强制执行此操作。 如果你担心这个,你可以使用两种方法: 
 b === void 0; typeof b === 'undefined'; // also works for undeclared variables