javascript中函式宣告和函式表示式的區別
阿新 • • 發佈:2018-12-27
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;})
以函式表示式的方式來定義函式,函式的名稱是可選的。如果定義了函式名稱,這時函式名稱會變成函式內部的一個區域性變數(非常適合用於遞迴)。函式定義表示式特別適合用來定義只會用到一次的函式。