JS定義函數的兩種方式:函數聲明和函數表達式


函數聲明

  關於函數聲明的方式,它的一個重要的特性就是函數聲明提升(function declaration hoisting),意思是在執行代碼之前會先讀取函數聲明。這就意味着可以把函數聲明放在調用它的語句后面,如下所示:

1             sayHi();
               //在調用語句的后面聲明函數(function declaration hoisting)
2             function sayHi () {
3                console.log("Hello World");
4             } 

  

 函數表達式

  有多種表達方式,下面是最常見的一種:

 var s = function (agr1, arg2) {
      console.log(arg1 + '  ' + arg2);
  } 

按照書中所說,函數聲明語句,聲明函數實際是聲明了一個變量f,然后將一個聲明的函數對象賦值給變量f,變量的聲明有提至所有代碼頂部的特點,故函數聲明語句聲明的函數可以在聲明之前調用。

 

至於為什么同樣是將一個函數賦值給一個變量,函數表達式卻不能提到前面呢?我們來分析下:

var s = function(arg1, arg2) {};

  

可以拆分為:

var s;
s = function (arg1, arg2) {}

  

其中 var s 被提前聲明了,但 s = xxxx 是要在運行到這里的時候才進行。

 


免責聲明!

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



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