函式宣告與函式表示式
函式宣告:function a = (num){alert(num+1)}
函式表示式:var a = function(num){alert(num+1)}
開發時,兩種宣告方式都可以,但要注意一點,解析器在執行環境中對這兩種形式的解析順序是不同的。
解析器會在所有程式碼執行之前就對函式宣告進行解析,無論宣告在程式碼的什麼位置,都是優先解析的。但對於函式表示式,解析器是按照程式碼行的順序依次執行的。因此會出現如下例子中的情況:
add(1,3); //4 sub(2,1); //報錯 Uncaught TypeError: sub is not a function function add(num1,num2){console.log(num1+num2)}; var sub = function(num1,num2){console.log(num1-num2)}; sub(2,1); //1