目录

JavaScript 函数参数


JavaScriptfunction不对参数值(参数)执行任何检查。


函数形参和实参

在本教程的前面部分,您了解到函数可以具有参数

function functionName( parameter1, parameter2, parameter3) {
  // code to be executed
}

函数参数名字列在函数定义中。

函数论点是真实的传递给函数(并由函数接收)。


参数规则

JavaScript 函数定义不指定参数的数据类型。

JavaScript 函数不对传递的参数执行类型检查。

JavaScript 函数不检查接收到的参数数量。


默认参数

如果一个函数被调用缺少参数(小于声明的值),缺失值设置为undefined

有时这是可以接受的,但有时最好为参数分配默认值:

示例

function myFunction(x, y) {
  if (y === undefined) {
    y = 2;
  }
}
亲自试一试 »

默认参数值

ES6允许函数参数具有默认值。

示例

如果 y 未传递或未定义,则 y = 10。

function myFunction(x, y = 10) {
  return x + y;
}
myFunction(5);
亲自试一试 »

功能 其余参数

剩余参数 (...) 允许函数将不定数量的参数视为数组:

示例

function sum(...args) {
  let sum = 0;
  for (let arg of args) sum += arg;
  return sum;
}

let x = sum(4, 9, 16, 25, 29, 100, 66, 77);
亲自试一试 »


参数对象

JavaScript 函数有一个称为参数对象的内置对象。

参数对象包含调用函数时使用的参数数组。

这样,您可以简单地使用函数来查找(例如)数字列表中的最高值:

示例

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;
}
亲自试一试 »

或者创建一个函数来对所有输入值求和:

示例

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;
}
亲自试一试 »

如果一个函数被调用实参太多(超过声明的),这些参数可以使用参数对象


参数按值传递

函数调用中的参数是函数的参数。

JavaScript 参数通过:函数只知道值,而不知道参数的位置。

如果函数更改参数的值,它不会更改参数的原始值。

对参数的更改在函数外部不可见(反映)。


对象通过引用传递

在 JavaScript 中,对象引用就是值。

因此,对象的行为就像它们被经过一样参考:

如果函数更改对象属性,它会更改原始值。

对象属性的更改在函数外部可见(反映)。