js函数有两种创建方式
一种是函数声明,另一种就是函数表达式。
function functionName(arg0,arg1,arg2){ //函数体 }
关于函数声明,它一个重要特征就是函数声明提升,意思是在执行代码之前就会先读取函数声明。这就意味着,可以把函数声明放在调用它的语句·后面。
sayHi(); function sayHi(){ alert("Hi"); }
第二种创建函数的方式是使用函数表达式。函数表达式有几种不同的形式,下面是最常见的一种形式
var functionName = function(arg0,arg1,arg2){ //函数体 };
这种情况下创建的函数叫做匿名函数。
函数·表达式与其它表达式一样,在使用前必须先赋值,以下代码会导致错误。
sayHi(); //错误,函数还不存在 var sayHi = function(){ alert("Hi"); }
sayHi() //正确,放在下面调用才可以弹出,Hi
2,递归
递归函数是在一个函数通过名字调用自身的情况下构成的,如下所示。
function factorial(num){ if(num<=1){ return 1; }else{ return num*factorial(num-1) } }
alert(factorial(5)); //5*4*3*2*f(1)=120
alert(factorial(4)); //4*3*2*f(1)= 24
方法二,以下代码创建一个名为f()的命名函数表达式,然后将它赋值给变量factorial,即便把函数赋值给了另外一个变量,函数的名字f仍然有效,所以递归调用照样能正确完成。
var factorial = function f(num){ if(num<=1){ return 1; }else{ return num*f(num-1) } }; alert(factorial(5)); //5*4*3*2*f(1)=120
7.2 闭包
闭包是指有权访问另外一个函数作用域中的