JavaScript 函数参数

JavaScript 通过函数参数将数据传递到函数内部,JavaScript 的函数参数数量是灵活的,参数的类型是不受限制的。

JavaScript 通过函数参数将数据传递到函数内部,JavaScript 的函数参数数量是灵活的,参数的类型是不受限制的。

在本教程的前面部分,已经了解到函数的语法如下:

function functionName(parameter1, parameter2, parameter3) {
  // some code
}

其中 parameter1 等便是函数的参数的参数名,而参数值则是 parameter1 具体的内容,可能是一个文字值,可能是一个对象或者数组,具体是什么则完全根据函数的定义。

函数参数规则:

  • JavaScript 函数定义不指定参数的数据类型。
  • JavaScript 函数不会对传递的参数执行类型检查。
  • JavaScript 函数不检查接收到的参数数量。

默认参数值

如果调用函数时的参数数量少于定义的数量,那么缺失的参数的值为 undefined

对于参数的缺失,健壮的程序一般都会有相应的处理机制:

function myFunction(x, y) {
  if (y === undefined) {
    y = 2;
  }
}

ECMAScript 2015 允许在函数声明中使用默认参数值:

function (x, y = 2) {
  // some code
}

arguments 对象

JavaScript 函数内置一个参数对象 arguments,参数对象包含调用函数时使用的参数数组。

利用 arguments 实现一个求最大值的方法:

x = findMax(1, 123, 500, 115, 44, 88);

function findMax() {
  let max = -Infinity;
  for (let i = 0; i < arguments.length; i++) {
    if (arguments[i] > max) {
      max = arguments[i];
    }
  }
  return max;
}

利用 arguments 实现一个求和的方法:

x = sumAll(1, 123, 500, 115, 44, 88);

function sumAll() {
  let sum = 0;
  for (let i = 0; i < arguments.length; i++) {
    sum += arguments[i];
  }
  return sum;
}

如果调用的函数参数数量比声明的多,就可以使用 arguments 对象访问这些参数。