JavaScript 函数参数
JavaScript 的 function
不会执行任何参数值(实参)的检查。
函数参数和实参
在本教程前面,您已经了解到函数可以有参数
function functionName(parameter1, parameter2, parameter3) {
// 要执行的代码
}
函数参数是在函数定义中列出的名称。
函数实参是传递给函数(并由函数接收)的实际值。
参数规则
JavaScript 函数定义不为参数指定数据类型。
JavaScript 函数不对传递的实参进行类型检查。
JavaScript 函数不检查接收到的实参数量。
默认参数
如果一个函数在调用时缺少实参(少于声明的数量),则缺失的值将设置为 undefined
。
有时这是可以接受的,但有时最好为参数分配一个默认值
默认参数值
ES6 允许函数参数具有默认值。
示例
如果未传递 y 或 y 为 undefined,则 y = 10。
function myFunction(x, y = 10) {
return x + y;
}
myFunction(5);
自己动手试一试 »
函数剩余参数 (Rest Parameter)
剩余参数 (...) 允许函数将不定数量的实参视为一个数组。
示例
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);
自己动手试一试 »
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;
}
自己动手试一试 »
或者创建一个函数来对所有输入值求和
示例
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 对象来访问。
实参按值传递
函数调用中的参数是函数的实参。
JavaScript 实参是按值传递的:函数只知道值,而不知道实参的位置。
如果函数更改了实参的值,它不会改变参数的原始值。
对实参的更改在函数外部是不可见的(不反映的)。
对象按引用传递
在 JavaScript 中,对象引用是值。
因此,对象将表现得好像是按引用传递的:
如果函数更改了对象属性,它会更改原始值。
对对象属性的更改在函数外部是可见的(反映的)。