1 函数的两种使用方式:第一函数声明,第二函数表达式,写法如下:
<script>
function test1(){
//函数的声明
alert("test1");
}
test1();
var test2=function(){
//函数表达式
alert("test2");
};
test2();
</script>
区分函数声明和函数表达式:最重要的是理解函数声明的提升,即在执行代码前先会读取函数的声明,意外着可以把函数的声明放到函数的调用之后,并不会报错。然而对于函数表达式不行。
2 递归
三种递归的方式:
1常见的写法:
function test(num){
if(num<=1){
return 1;
}else{
return num+test(num-1);
}
}
var anothertest=test;//
test=null;//这两行代码会导致上诉的递归函数调用错误
2 arguments.callee()是一个指向正在执行的函数的指针,可用它实现递归function test(num){
if(num<=1){
return 1;
}else{
return num+arguments.callee(num-1);
}
}
这种写法在非严格模式下没问题。
3严格模式下的递归调用(非严格也行)
<script>
var test1=(function test(num){
if(num<=1){
return 1;
}else{
return num+test(num-1);
}
});
alert(test1(4));
</script>
通过创建一个test()命名函数表达式。
参考js高级编程3