1.函数声明:

  1. function 函数名字 (参数列表) {

    1. 函数体

    }

  2. 函数表达式声明:(没有函数声明提升)

var函数名字 = function (参数列表) {
函数体
}

2.函数声明提升:

它的一个重要特征就是函数声明提升,意思是在执行代码之前会先读取函数声明。
这意味着可以把函数声明放在调用它的语句后面。

3.函数参数:(形参、实参)

  1. 形参:函数定义时的参数
  2. 实参:函数调用时的参数

在函数调用时,会将实参赋值给形参

  1. 参数个数:

函数调用时传递的参数个数,不是必须与函数定义时传递的参数个数一致
arguments对象
arguments.length
通过[索引]取出参数

4.函数的返回值:return

方法:通过return关键字,可以为函数指定返回值。
作用:可以将函数内部的计算或者操作的结果,返回给函数外部
特点:函数内部执行return后,函数将退出,return之后的所有代码将不再执行。

  1. JS中的函数,不要求必须有返回值。JS引擎默认返回undefined
  2. 可以只写return,函数按照返回undefined处理。
  3. 如果返回值代表某种意义(比如是不是质数),就要尽量保证所有的选择分支都return

    5.函数调用:

    函数在定义的时候,函数体内的语句是不会被执行的。
    只有函数在调用的时候,才会执行函数体

  4. 调用方法:

functionName (param1, param2);

6.函数的作用域:

在函数中声明的变量,在整个函数体内都可见,函数外不可见
不在任何函数内声明的变量是全局变量,在整个JavaScript程序中都可见
向未声明的JavaScript变量来分配值,则这个变量被设定为全局变量(尽量避免使用)

7.函数的递归

递归就是在函数内部调用自己的过程

构成递归的条件:

  1. 子问题须与原始问题为同样的事,且更为简单;
  2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。

递归案例
1.利用递归,计算N的阶乘。
2.兔子数列:兔子在出生两个月成熟,从出生后第三个月就有繁殖能力,一对成熟兔子每个月能生出一对小兔子来。假设,第一个月有一对刚出生的兔子,如果所有兔子都不死,那么一年以后可以繁殖多少对兔子