JavaScript函数参数详解:理解arguments和形参

1 下载量 124 浏览量 更新于2024-09-02 收藏 72KB PDF 举报
深入理解JavaScript函数参数 JavaScript函数参数与其他语言的函数参数有所不同,函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,甚至可以不传参数。JavaScript中的函数定义并未指定函数形参的类型,函数调用也未对传入的实参值做任何类型检查。实际上,JavaScript函数调用甚至不检查传入形参的个数。 JavaScript函数参数的特点: 1. 参数类型不确定:JavaScript函数参数可以是任何数据类型,包括数字、字符串、对象、数组等。 2. 参数个数不确定:JavaScript函数可以传递任意个数的参数,包括零个参数。 3. 不检查形参类型:JavaScript函数调用不检查传入的实参值的类型。 4. 不检查形参个数:JavaScript函数调用不检查传入的实参个数。 arguments对象: arguments对象是一个数组,用于存储函数调用的所有参数。在函数体内,可以通过arguments对象来访问这个参数数组,从而获取传递给函数的所有参数。 同名形参: 在非严格模式下,函数中可以出现同名形参,且只能访问最后出现的该名称的形参。但是在严格模式下,出现同名形参会抛出语法错误。 参数个数小于形参个数: 当实参比函数声明指定的形参个数要少,剩下的形参都将设置为undefined值。 使用逻辑或运算符给省略的参数设置一个合理的默认值: function add(x, y) { y = y || 2; console.log(x, y); // 1 2 } add(1); 注意:实际上,使用y||2是不严谨的,显式地设置假值(undefined、null、false、0、-0、“”、NaN)也会得到相同的结果。所以应该根据实际场景进行合理设置。 参数个数大于形参个数: 当实参比形参个数要多时,剩下的实参没有办法直接获得,需要使用arguments对象来访问所有参数。 总结: JavaScript函数参数具有灵活性和自由度,函数可以传递任意个数和类型的参数,函数调用不检查传入的实参值和个数。但是,这种灵活性也带来了编程上的挑战,需要开发者自己进行参数检查和处理。