函数定义
javascript中函数的入参没有C或者Java中那么严格,即当你在javascript中定义了一个函数,例如 foo,那么在后面的代码中调用 foo 的时候,不管调用 foo 的入参有几个,javascript 都是执行你最新定义的 foo 函数。
function foo( arg1 ) {
arg1 = arg1 || 0;
return arg1 + 1;
}
function foo( arg1, arg2 ) {
arg1 = arg1 || 0;
arg2 = arg2 || 0;
return arg1 + arg2;
}
console.log(foo(1)); // 1
可以看到,这里javascript运行的函数没有像C或者Java中使用第一个foo函数,所以这样我们在定义javascript函数的时候,对于函数的入参的处理很灵活。在看他人写的api文档的时候,总是可以看到有的函数的参数有默认值这些的。所以定义函数的时候我们可以像类似下面的方式处理。
// foo 函数最多接受3个入参
// arg1: 默认值为 0
// arg2: 默认值为 1
// arg3: 默认值为 2
function foo(arg1, arg2, arg3) {
if(arguments.length == 2) {
arg3 = arg2;
arg2 = arg1;
arg1 = 0;
} else if(arguments.length == 1) {
arg3 = arg1;
arg2 = 1;
arg1 = 0;
} else if(arguments.length == 0) {
arg3 = 2;
arg2 = 1;
arg1 = 0;
}
return arg1 + arg2 + arg3;
}
foo(2,3,4); // 9
foo(3,4); // 7
foo(4); // 5
foo(); // 3