1. 程式人生 > >函式的宣告和表示式

函式的宣告和表示式

//解析器在向執行環境中載入資料時,對函式宣告和函式表示式並非一視同仁。解析器會率先讀取函式宣告,並使其在執行
//任何程式碼之前可用(可以訪問);至於函式表示式,則必須等到解析器執行到它所在的程式碼行,才會真
//正被解釋執行。
//下列可以被正常執行 因為:因為在程式碼開始執行之前,解析器就已經通過一個名為函式宣告提升
//的過程,讀取並將函式宣告新增到執行環境中。
            alert(sum(10,10)); 
            function sum(num1, num2){ 
                return num1 + num2; 
            } 

//產生錯誤 只有函式宣告才會被提升,而表示式不會
alert(sum(10,10)); var sum = function(num1, num2){ return num1 + num2; }; //因為ECMAScript中的函式名本身就是變數,所以函式也可以作為值來使用。也就是說,不僅可以 //像傳遞引數一樣把一個函式傳遞給另一個函式,而且可以將一個函式作為另一個函式的結果返回 //有兩個特殊的物件:arguments和this雖然arguments的主要用途是儲存函式引數,但這個物件還有 //一個名叫callee的屬性,該屬性是一個指標,指向擁有這個arguments物件的函式
function factorial(num){ if (num <=1) { return 1; } else { return num * factorial(num-1) } } function factorial(num){ if (num <=1) { return
1; } else { return num * arguments.callee(num-1) } }