相信學過c語言的同學從老師那聽得最多的一句話那便是“先定義,後使用(這裏說的是 變量啦)”,那麼在javascript中函數申明與函數表達式有什麼區別呢?
請看下面的代碼
//函數申明
alert(test(100));
function test(num)
{
return num+100;
}
這段代碼沒有什麼問題,可以運行。
接着看下面一段代碼
//函數表達式
alert(test(100));
var test=funtion(num)
{
return num+100;
}
這段代碼便會出問題,我們來看看爲什麼,在javascript中,對於以申明方式寫的函數,在函數執行前javascript解析引擎便已經將函數名指向函數體並加入代碼樹中了,而對於函數表達式來說則只有等到執行到他的時候纔會將函數指針賦給複製表達式前的變量,也就是在這之前對它調用是會出問題的,類似於空指針。