高程7-函數 表達式
阿新 • • 發佈:2017-11-15
訪問 代碼執行 type 因此 ole 執行 表達式 erro ria
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.閉包
高程7-函數 表達式