二十五岁时我们都一样愚蠢、多愁善感,喜欢故弄玄虚,可如果不那样的话,五十岁时也就不会如此明智。
标题: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中,对象引用是值.
因此,对象的行为就像它们被传递引用:
如果函数更改了对象属性,则会更改原始值.
对象属性的更改在函数外可见.