JavaScript 函数参数
JavaScript function
不会对参数值(参数)进行任何检查。
函数参数和参数
在本教程的前面,您学习了函数可以具有 **参数**
function functionName(parameter1, parameter2, parameter3) {
// 要执行的代码
}
函数 **参数** 是函数定义中列出的 **名称**。
函数 **参数** 是传递给(并接收)函数的实际 **值**。
参数规则
JavaScript 函数定义不会为参数指定数据类型。
JavaScript 函数不会对传递的参数进行类型检查。
JavaScript 函数不会检查接收到的参数数量。
默认参数
如果用 **缺少参数**(少于声明)调用函数,则缺少的值将设置为 undefined
。
有时这是可以接受的,但有时最好为参数分配一个默认值
默认参数值
ES6 允许函数参数具有默认值。
示例
如果 y 未传递或为 undefined,则 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);
尝试一下 »
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 中,对象引用是值。
因此,对象的行为就像它们是按 **引用** 传递的:
如果函数更改了对象属性,它将更改原始值。
对对象属性的更改在函数外部可见(反映)。