函数定义
JS的函数和定义和所有的高级语言类似
JS和Swift一样使用funciton
关键字来定义函数
function abs(x) {
if (x >= 0) {
return x;
} else {
return -x;
}
}
函数调用
2.1 JS可以传入任意和参数而不影响使用。这和编译型的语言有很大不同
//如果参数多顺序取值
abs(10, 'blablabla'); // 返回10
abs(-9, 'haha', 'hehe', null); // 返回9
//如果参数少,则返回NaN
//此时abs(x)函数的参数x将收到undefined,计算结果为NaN。
abs(); // 返回NaN
arguments
JavaScript还有一个免费赠送的关键字arguments
,它只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数。
//即使函数不定义任何参数,还是可以拿到参数的值
function abs() {
if (arguments.length === 0) {
return 0;
}
var x = arguments[0];
return x >= 0 ? x : -x;
}
abs(); // 0
abs(10); // 10
abs(-9); // 9
rest参数
/*
1. rest参数只能写在最后,前面用...标识,从运行结果可知,传入的/参数先绑定a、b,多余的参数以数组形式交给变量rest,所以,不再需要arguments我们就获取了全部参数。
2. 如果传入的参数连正常定义的参数都没填满,也不要紧,rest参数会接收一个空数组(注意不是undefined)
*/
function foo(a, b, ...rest) {
console.log('a = ' + a);
console.log('b = ' + b);
console.log(rest);
}
foo(1, 2, 3, 4, 5);
// 结果:
// a = 1
// b = 2
// Array [ 3, 4, 5 ]
foo(1);
// 结果:
// a = 1
// b = undefined
// Array []