函数的参数
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
在 JavaScript 中,函数的参数是比较有意思的,比如,你可以将任意多的参数传递给一个函数,即使这个函数声明时并未制定形式参数,比如:
function adPrint(str, len, option){
var s = str || "default";
var l = len || s.length;
var o = option || "i";
s = s.substring(0, l);
switch(o){
case "u":
s = s.toUpperCase();
break;
case "l":
s = s.toLowerCase();
break;
default:
break;
}
print(s);
}
adPrint("Hello, world");
adPrint("Hello, world", 5);
adPrint("Hello, world", 5, "l");//lower case
adPrint("Hello, world", 5, "u");//upper case
函数 adPrint 在声明时接受三个形式参数:要打印的串,要打印的长度,是否转换为大小写的标记。但是在调用的时候,我们可以按顺序传递给 adPrint 一个参数,两个参数,或者三个参数(甚至可以传递给它多于 3 个,没有关系),运行结果如下:
Hello, world
Hello
hello
HELLO
事实上,JavaScript 在处理函数的参数时,与其他编译型的语言不一样,解释器传递给函 数的是一个类似于数组的内部值,叫 arguments,这个在函数对象生成的时候就被初始化了。比如我们传递给 adPrint 一个参数的情况下,其他两个参数分别为 undefined.这样,我们可以才 adPrint 函数内部处理那些 undefined 参数,从而可以向外部公开:我们可以处理任意参数。
我们通过另一个例子来讨论这个神奇的 arguments:
function sum(){
var result = 0;
for(var i = 0, len = arguments.length; i < len; i++){
var current = arguments[i];
if(isNaN(current)){
throw new Error("not a number exception");
}else{
result += current;
}
}
return result;
}
print(sum(10, 20, 30, 40, 50));
print(sum(4, 8, 15, 16, 23, 42));//《迷失》上那串神奇的数字
print(sum("new"));
函数 sum 没有显式的形参,而我们又可以动态的传递给其任意多的参数,那么,如何在 sum函数中如何引用这些参数呢?这里就需要用到 arguments 这个伪数组了,运行结果如下:
150
108
Error: not a number exception
在线练习
{$ activeFileHint $}