定义函数有两种方式:函数声明,函数表达式。
函数声明:function tfs(){},其有一个重要的特征:函数声明提升,即执行代码前会读取函数声明。
tfs(); //调用它的语句可放在函数声明前。
function tfs(){};
函数表达式: var tfs = function(){}; //即创建一个匿名函数(也叫拉姆达函数)并将它赋给变量tfs
//使用前必须先赋值。 tfs(); var tfs = function(){}; 错
var tfs; tfs= function(){}; 对
见下图,即二者的主要区别:执行代码前总会先读取函数声明。而函数表达式则不会。
递归:
function factorial(num){ //或用函数表达式 var factiorial =(function f(num){})
if(num < =1){
return num;
}else{
return num*factorial(num-1); //应改为return num*arguments.callee(num-1); arguments.callee是一个指向正在执 行的函数的指针。
//若用函数表达式,改为return num*f(num-1);
}
}
若:
var anotherFactorial = factorial;
factorial = null;
alert(anotherFactorial(4);) //出错