Javascript 函數(shù)

2018-01-10 15:55 更新

Javascript面向?qū)ο笤O(shè)計(jì) - Javascript函數(shù)


Javascript函數(shù)實(shí)際上是對(duì)象。

內(nèi)部屬性由雙方括號(hào)表示。

Javascript定義了幾個(gè)JavaScript中對(duì)象的內(nèi)部屬性。

typeof 運(yùn)算符為任何返回“function"對(duì)象與 [[Call]] 屬性。

聲明與表達(dá)式

函數(shù)聲明以 function 關(guān)鍵字開頭,并以名稱繼續(xù)的功能。

以下代碼使用函數(shù)聲明文字語法創(chuàng)建函數(shù)將兩個(gè)數(shù)字加在一起。

function add(num1, num2) { 
   return num1 + num2; 
} 

函數(shù)表達(dá)式不需要函數(shù)后面的名稱。

這些函數(shù)是匿名的,因?yàn)楹瘮?shù)對(duì)象本身沒有名稱。

函數(shù)表達(dá)式通常通過變量或?qū)傩砸谩?/p>

下面的代碼創(chuàng)建一個(gè)函數(shù)表達(dá)式將兩個(gè)數(shù)字加在一起。

var add = function(num1, num2) { 
   return num1 + num2; 
}; 

上面的代碼為變量 add 分配了一個(gè)函數(shù)值。

賦值表達(dá)式以分號(hào)結(jié)尾。

函數(shù)聲明被提升到上下文的頂部。

使用函數(shù)聲明,我們可以定義一個(gè)函數(shù)在代碼中使用而不生成錯(cuò)誤。

例如:

var result = add(5, 5); 

function add(num1, num2) { 
   return num1 + num2; 
} 

JavaScript引擎將函數(shù)聲明提升到頂部和實(shí)際上執(zhí)行代碼,就像它是這樣寫的:

function add(num1, num2) { 
   return num1 + num2; 
} 

var result = add(5, 5); 

注意

只要我們?cè)谑褂盟鼈冎岸x函數(shù),我們可以使用函數(shù)聲明或函數(shù)表達(dá)式。

函數(shù)作為值

JavaScript函數(shù)可以用作任何其他對(duì)象。

我們可以為變量分配函數(shù),將它們添加到對(duì)象,將它們作為參數(shù)傳遞給其他函數(shù),并從函數(shù)返回它們。

我們可以使用函數(shù)在任何地方使用參考值。

考慮下面的例子:

function myMethod() { 
   console.log("Hi!"); 
} 
myMethod();        // outputs "Hi!" 

var myMethod2 = myMethod; 

myMethod2();       // outputs "Hi!" 

在這段代碼中,有一個(gè)函數(shù)聲明為 myMethod 。

然后一個(gè)名為 myMethod2 的變量創(chuàng)建并分配 myMethod 的值。

myMethod myMethod2 都指向同一個(gè)函數(shù)。

Javascript函數(shù)是對(duì)象。

我們可以將一個(gè)函數(shù)作為參數(shù)傳遞給另一個(gè)函數(shù)。


例子

以下代碼顯示了如何將函數(shù)作為數(shù)據(jù)傳遞到另一個(gè)函數(shù)。

JavaScript數(shù)組上的sort()方法接受比較函數(shù)作為可選參數(shù)。

當(dāng)比較兩個(gè)值時(shí)調(diào)用比較函數(shù)。

如果第一個(gè)值小于第二個(gè)值,則比較函數(shù)返回a負(fù)數(shù)。

如果第一個(gè)值大于第二個(gè),函數(shù)返回一個(gè)正數(shù)。

如果兩個(gè)值相等,函數(shù)應(yīng)返回零。

對(duì)數(shù)字?jǐn)?shù)組進(jìn)行排序,例如:

var numbers = [ 11, 15, 18, 41, 71, 110, 21, 16 ]; 
// www.o2fo.com
var s = function(first, second) { 
   return first - second; 
};

numbers.sort(s); 

console.log(numbers);

numbers.sort(); 
console.log(numbers); 

上面的代碼生成以下結(jié)果。

在上面的代碼中,比較函數(shù)s被傳遞給sort()。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)