函數聲明的兩種形式的區別


 我們知道關鍵字function用來定義函數;函數定義可以寫成函數定義表達式,也可以寫成語句的形式。例如下面的兩種寫法

var f = function(x){return x+1;}   //將表達式賦值給一個變量  函數表達式
function f(x){return x+1;}         //含有變量的語句        函數聲明

盡管函數聲明語句和函數定義表達式包含相同的函數名;但它們之間還是有區別的。

相同點:兩種方式都創建了新的函數對象;兩者都會被“提前”(函數語句中定義的函數被顯示的提前到腳本或則函數的頂部,因此它們在整個腳本內可見);

不同點:函數聲明語句中函數名是一個變量名,變量指向函數對象。和通過var聲明變量一樣,函數語句中定義的函數被顯示的提前到腳本或則函數的頂部,因此它們在整個腳本內可見;

1.使用var只有變量聲明提前--變量的初始化任然在原來的位置,然而使用函數聲明語句的話函數名稱和函數體均提前

總結:簡單的說函數表達式的方式(也就是var聲明方式)函數只有在var語句聲明之后才能被調用;而函數聲明(也就是function聲明方式)函數可以在函數聲明之前調用。

這些情況是   因為函數表達式是在函數運行的階段才賦值給變量f;而函數聲明在代碼運行之前,也就是代碼解析階段就已經賦值給了變量f

我們可以看下面的代碼

console.log(f,"函數前")
var f = function (x) {
      return x + 1;//函數表達式
} console.log(f,"函數后")

而這段代碼運行的結果

console.log(f,"函數前")
function f(x) {
   return x + 1;//函數聲明
}
console.log(f,"函數后")

結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM