夜光序言:
一句调侃,卸下不快;一声轻唤,驱走烦恼;一句懂得,温暖胸怀。
不求拥有,但求灵魂相通;不求永恒,但求片刻感动;不求怜惜,但求心语能懂。
正文:
JavaScript 函数参数
JavaScript 函数对参数的值没有进行任何的检查。
函数显式参数(Parameters)与隐式参数(Arguments)
在先前,我们已经学习了函数的显式参数:
functionName(parameter1, parameter2, parameter3) { // 要执行的代码…… }
函数显式参数在函数定义时列出。
函数隐式参数在函数调用时传递给函数真正的值。
参数规则
JavaScript 函数定义显式参数时没有指定数据类型。
JavaScript 函数对隐式参数没有进行类型检测。
JavaScript 函数对隐式参数的个数没有进行检测。
默认参数
ES5 中如果函数在调用时未提供隐式参数,参数会默认设置为: undefined
有时这是可以接受的,但是建议最好为参数设置一个默认值:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>夜光</title>
</head>
<body>
<p>设置参数的默认值。</p>
<p id="demo"></p>
<script>
function myFunction(x, y) {
if (y === undefined) {
y = 0;
}
return x * y;
}
document.getElementById("demo").innerHTML = myFunction(4);
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>夜光</title>
</head>
<body>
<p>设置函数参数默认值。</p>
<p id="demo"></p>
<script>
function myFunction(x, y) {
y = y || 0;
return x * y;
}
document.getElementById("demo").innerHTML = myFunction(4);
</script>
</body>
</html>
嗯唔:ES6 函数可以自带参数
ES6 支持函数带有默认参数,就判断 undefined 和 || 的操作:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>夜光</title>
</head>
<body>
<p>设置参数的默认值</p>
<p id="demo1"></p>
<p id="demo2"></p>
<script>
function myFunction(x, y = 10) {
// 夜光:如果不传入参数 y ,则其默认值为 10
return x + y;
}
// 输出 2
document.getElementById("demo1").innerHTML = myFunction(0, 2) ;
// 输出 15, y 参数的默认值
document.getElementById("demo2").innerHTML = myFunction(5);
</script>
</body>
</html>
嗯唔:arguments 对象
JavaScript 函数有个内置的对象 arguments 对象。
argument 对象包含了函数调用的参数数组。
通过这种方式你可以很方便的找到最大的一个参数的值:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>夜光</title>
</head>
<body>
<p>查找最大的数。</p>
<p id="demo"></p>
<script>
x = findMax(1, 123, 500, 115, 44, 88);
function findMax() {
var i, max = arguments[0];
if(arguments.length < 2) return max;
for (i = 0; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
}
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
或者创建一个函数用来统计所有数值的和:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>夜光</title>
</head>
<body>
<p>计算所有参数之和:</p>
<p id="demo"></p>
<script>
function sumAll() {
var i, sum = 0;
for(i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
document.getElementById("demo").innerHTML =
sumAll(1, 123, 111, 115, 44, 88);
</script>
</body>
</html>