1. 程式人生 > >高程7-函數 表達式

高程7-函數 表達式

訪問 代碼執行 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-函數 表達式