函数 函数是什么 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的函数在查找变量时从自身函数定义开始,从“内”向“外”查找。如果内部函数定义了与外部函数重名的变量,则内部函数的变量将“屏蔽”外部函数的变量。