JavaScript中利用arguments对象获取函数参数个数与值
本文介绍JavaScript中函数传参的灵活性,对比PHP的严格匹配。重点讲解arguments对象的特性,演示如何通过它获取实参个数及具体值。通过示例展示在形参少于或多于实参时的表现,以及利用arguments实现不定数量数字的最小值计算逻辑。
JavaScript函数传参的灵活性
JavaScript与PHP在函数参数传递机制上存在差异。PHP要求形式参数与实际参数的数量必须严格匹配,而JavaScript则更为灵活,允许传入任意数量的参数,无论实参数量少于还是多于形参,均不会引发错误。
当实际传入的参数数量超过函数定义的形式参数数量时,程序不会报错。
function say(a){
alert(a);
}
say('琼台博客','WEB技术博客');
运行上述代码后的输出情况。

接下来考察形式参数数量多于实际传入参数数量的情况。
function say(a,b){
alert('a 的值是 '+a+'\nb 的值是 '+b);
}
say('琼台博客');
该场景下的运行输出结果。

变量a接收第一个实参“琼台博客”,而变量b由于没有对应的实参传入,其值为undefined。
arguments对象的使用
关于arguments对象的说明。
在复杂的程序设计中,往往不预先指定参数个数,而是采用灵活的处理方式。函数内部内置了一个名为arguments的数组对象,专门用于存储所有传入的实际参数。通过访问arguments对象,可以获取传入参数的总数以及每个参数的具体值。
function arg(){
var str = '总共传了'+arguments.length+'个参数\n';
for(var i=0;i<arguments.length;i++){
str += '第'+(i+1)+'个参数值:'+arguments[i]+'\n';
}
alert(str);
}
arg('琼台博客','PHP博客','WEB技术博客');
运行上述代码后的输出情况。

在上述示例中,定义的函数arg并未指定任何形式参数,而是直接使用arguments对象来接收所有传入的实参,这种方式提供了极高的灵活性。
利用arguments计算最小值示例
例如,可以利用arguments对象来计算一组数字中的最小值,无论这组数字包含多少个元素。具体代码实现如下:
function arg(){
var tmp = 0, str = '在 ';
for(var i=0;i<arguments.length;i++){
for(var g=0;g<arguments.length;g++){
if(arguments[g]<arguments[i]){
tmp = arguments[g];
}
}
str += arguments[i]+',';
}
alert(str.substr(0,str.length-1)+' 里最小的值是 '+tmp);
}
arg(200,100,59,3500);
运行包含200、100、59、3500四个数值的比较结果。

随后增加两个数值,分别为5和60。
function arg(){
var tmp = 0, str = '在 ';
for(var i=0;i<arguments.length;i++){
for(var g=0;g<arguments.length;g++){
if(arguments[g]<arguments[i]){
tmp = arguments[g];
}
}
str += arguments[i]+',';
}
alert(str.substr(0,str.length-1)+' 里最小的值是 '+tmp);
}
arg(200,100,59,3500,5,60);
运行包含200、100、59、3500、5、60共六个数值的比较结果。

对比两次运算结果可知,无论传入多少个数字,程序均能正确比对并返回最小值。arguments对象通常应用于实参数量不确定的场景,例如上述例子中,既可以传入5个数字进行比较,也可以传入100个数字进行比较。
JavaScript怎么遍历对象的Symbol键和不可枚举属性
2026-11-05 13:13:39
封装一个健壮的JS字符串判空工具函数
2026-11-05 12:16:14
JavaScript合并数组的三种常用方法:concat、扩展运算符与push
2026-11-05 11:22:29
JavaScript立即执行函数(IIFE)是什么及基本语法
2026-11-05 10:51:19
JS对象数组转字符串为什么推荐用JSON.stringify()
2026-11-05 09:40:31
