1.定义函数的两种方法:
1.函数声明
function functionName(arg0,arg1){
}
特点:函数预解析,代码执行的时候,可以先调用后执行,因为预解析;
a()
function a() {
console.log("s")
};
2.函数表达式
var functionName=function(arg0,arg1){
}
特点:创建的函数是匿名函数,函数名子是空字符串;与定义变量一样,
a()
var a=function (){
console.log("123");
} // Uncaught TypeError: a is not a function at
不要在if代码体中定义函数
2. 递归
function factorial(num){ if(num<=1){ return 1; }else{ return num*factorial(num-1) //也可以换成 return num*argument.callee(num-1);
} }
这里argument.callee(num-1)指的是正在执行的函数,使用argument.callee代替函数名,可以确保无论怎么样调用的函数都不会出问题,因此,在编写递归函数时,使用argument.callee比函数名可靠;
严格模式:
var fac=(function f(num){
if (num<=1){
return
}else{
return num* f(num-1)
}
)
严格模式,不能通过脚本访问argument.callee,访问这个属性会导致错误,不过,可以使用命名函数表达式来、
3.闭包
原文:http://www.cnblogs.com/liangfc/p/7835315.html