函数
函数是什么
function abs(x) {
}
function声明一个函数;
abs 函数名
(x) 参数列表,多个参数以,分隔;
{ ... } 函数体
函数也是对象
由于JavaScript允许传入任意个参数(多传参数或少传参数)而不影响调用,因此传入的参数比定义的参数多也没有问题,虽然函数内部并不需要这些参数
结束函数
有return://遇到return,执行return语句,返回结果,默认返回
无return:遇到大括号,默认返回return undefined
参数
函数的形参:只要写变量名就可以,不用写var
arguments
关键字arguments,它只在函数内部起作用,是一个类数组,内容是实参[a,b,c,1,2,3]。
函数的length就是形参的个数
function foo(x) {
console.log('x = ' + x); // 10
for (var i=0; i<arguments.length; i++) {
console.log('arg ' + i + ' = ' + arguments[i]); // 10, 20, 30
}
}
foo(10, 20, 30);
// foo(a[, b], c)// 接收2~3个参数,b是可选参数,如果只传2个参数,b默认为null:
rest参数
为什么:
是为了获得定义参数之外传入的参数
背景:
为了获取除了已定义参数a、b之外的参数,我们不得不用arguments,并且循环要从索引2开始以便排除前两个参数,这种写法很别扭,只是为了获得额外的rest参数
怎么使用rest参数:
rest参数只能写在最后,前面用...标识
function foo(a, b, ...rest) {
console.log('a = ' + a);}
变量作用域与解构赋值
内部函数可以访问外部函数定义的变量
这说明JavaScript的函数在查找变量时从自身函数定义开始,从“内”向“外”查找。如果内部函数定义了与外部函数重名的变量,则内部函数的变量将“屏蔽”外部函数的变量。