JavaScript函数参数



一个JavaScript函数对参数值不执行任何检查


函数实参和形参

在本教程中,您了解到函数可以有参数:

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

函数形参是函数定义中列出的名称.

函数实参是传递给函数的实际值.


参数规则

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

JavaScript函数不执行所传递的参数类型检查.

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


默认参数

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

有时这是可以接受的,但有时最好给参数指定默认值:

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

让我试试

如果函数调用的参数太多(超过声明的),这些参数可以通过 参数对象 来传递。


Arguments 对象

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

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

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

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

function findMax() {
    var i;
    var max = -Infinity;
    for (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() {
    var i, sum = 0;
    for (i = 0; i < arguments.length; i++) {
        sum += arguments[i];
    }
    return sum;
}

让我试试


参数通过值传递

函数调用中的参数是函数的实参.

JavaScript arguments are passed by value: The function only gets to know the values, not the argument's locations.

JavaScript的参数是通过 传递的:函数只会知道这个值,而不知道参数的地址

如果函数改变参数的值,它不会改变参数的原始值.

参数的改变在函数之外不可见.


对象是引用传递

在JavaScript中,对象引用是值.

因此,对象的行为就像它们被传递引用:

如果函数更改了对象属性,则会更改原始值.

对象属性的更改在函数外可见.