今天看書看到一段平常沒太注意的小細節。
一個函數的創建,會有兩種方式:聲明與表達式。
直接上代碼:
var a = declareFun(1,2);
console.log(a);
var b = conveyFun(3,4);
console.log(b);
function declareFun(num1,num2){
return num1+num2;
}
var conveyFun = function(num3,num4){
return num3+num4;
}
平常,我們可能都會不太在意declareFun和conveyFun這兩種創建一個函數的方式。
沒錯。他們的調用是一模一樣的。
都是函數名+括號+參數就可以調用了。
但是,表達式方式創建的函數,或者說,一個匿名函數賦值給一個變量的時候,是會產生先後順序的。
如上面代碼所示,
最終輸出的結果是:
3
testgetset.html:12 Uncaught TypeError: conveyFun is not a function
函數conveyFun是沒法調用的。因爲在變量b調用它的時候,它還沒聲明。
這文章可能比較顯淺,而且一般人也不容易錯。
但是,姑且也當是我的一個讀書筆記吧。
最終我們只要記住一點就可以了:始終在使用函數之前定義它們,你就可以隨意的使用函數聲明或表達式了。