1.函数声明:
function 函数名字 (参数列表) {
- 函数体
}
函数表达式声明:(没有函数声明提升)
var函数名字 = function (参数列表) {
函数体
}
2.函数声明提升:
它的一个重要特征就是函数声明提升,意思是在执行代码之前会先读取函数声明。
这意味着可以把函数声明放在调用它的语句后面。
3.函数参数:(形参、实参)
- 形参:函数定义时的参数
- 实参:函数调用时的参数
在函数调用时,会将实参赋值给形参
- 参数个数:
函数调用时传递的参数个数,不是必须与函数定义时传递的参数个数一致
arguments对象
arguments.length
通过[索引]取出参数
4.函数的返回值:return
方法:通过return关键字,可以为函数指定返回值。
作用:可以将函数内部的计算或者操作的结果,返回给函数外部
特点:函数内部执行return后,函数将退出,return之后的所有代码将不再执行。
- JS中的函数,不要求必须有返回值。JS引擎默认返回undefined
- 可以只写return,函数按照返回undefined处理。
如果返回值代表某种意义(比如是不是质数),就要尽量保证所有的选择分支都return
5.函数调用:
函数在定义的时候,函数体内的语句是不会被执行的。
只有函数在调用的时候,才会执行函数体调用方法:
functionName (param1, param2);
6.函数的作用域:
在函数中声明的变量,在整个函数体内都可见,函数外不可见
不在任何函数内声明的变量是全局变量,在整个JavaScript程序中都可见
向未声明的JavaScript变量来分配值,则这个变量被设定为全局变量(尽量避免使用)
7.函数的递归
递归就是在函数内部调用自己的过程
构成递归的条件:
- 子问题须与原始问题为同样的事,且更为简单;
- 不能无限制地调用本身,须有个出口,化简为非递归状况处理。
递归案例
1.利用递归,计算N的阶乘。
2.兔子数列:兔子在出生两个月成熟,从出生后第三个月就有繁殖能力,一对成熟兔子每个月能生出一对小兔子来。假设,第一个月有一对刚出生的兔子,如果所有兔子都不死,那么一年以后可以繁殖多少对兔子