1. 程式人生 > >javascript中函式宣告和函式表示式的區別

javascript中函式宣告和函式表示式的區別

1.js中函式表示式的定義

表示式(expression)JavaScript中的一個短語,javascript會將其計算(evaluate)出一個結果。程式中的常量是一個最簡單的表示式。變數名也是一種簡單的表示式,它的值就是賦值給變數的值。複雜表示式是由簡單表示式組成。
——摘自《javascript權威指南》

一個經典的函式表示式的定義方法:

//函式表示式的宣告,表示式的值就是這個新定義的函式
var expressFunc = function(){};

函式名稱是函式宣告語句必須得部分。它的用途就像變數的名字,新定義的函式物件會賦值給這個變數。對函式定義表示式來說,這個名字是可選的:如果存在,改名字只存在函式體中,並指代該函式物件本身。
注意:


以表示式來定義函式只適用於它作為一個大的表示式的一部分,比如在賦值和呼叫過程中定義函式。

//函式表示式的宣告,表示式的值就是這個新定義的函式
var expressFunc = function(){};

//函式宣告
function abc(){

}
//傳入引數的函式宣告
function abc2(test){

}

//函式表示式出入引數
var expressTest = function(test){};

//函式表示式可以包含名稱,這裡實際是將結果函式的結果賦值給expressTest
var expressTest = function evalu(test) {
    if
(test) { return 2; } else{ return -1; } }; //console.log(evalu()); //錯誤的呼叫方式 console.log(expressTest()); //函式表示式作為引數傳給其它函式 data.sort(function(a, b){return a-b;})

以函式表示式的方式來定義函式,函式的名稱是可選的。如果定義了函式名稱,這時函式名稱會變成函式內部的一個區域性變數(非常適合用於遞迴)。函式定義表示式特別適合用來定義只會用到一次的函式。

這裡寫圖片描述