最近中文字幕大全|熟女少妇精品一区二区|国产网红主播精品一区|日本一区二区精品理论电影|欧洲少妇无码精品视频在线|久久国产精品永久免费网站|人妻无码久久一区二区免费麻豆|国产日韩欧美一区二区在线高清

十二年專注于品牌網(wǎng)站建設(shè) 十余年專注于網(wǎng)站建設(shè)_小程序開發(fā)_APP開發(fā),低調(diào)、敢創(chuàng)新、有情懷!
南昌百恒網(wǎng)絡(luò)微信公眾號 掃一掃關(guān)注
小程序
tel-icon全國服務(wù)熱線:400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號
掃一掃打開百恒網(wǎng)絡(luò)微信小程序

百恒網(wǎng)絡(luò)

南昌百恒網(wǎng)絡(luò)

作為值的函數(shù)即將函數(shù)作為值使用的方法和實例

百恒網(wǎng)絡(luò) 2012-09-04 4722

因為ECMAScript中的函數(shù)名本身就是變量,所以函數(shù)也可以作為值來使用。也就是說,不僅可以像傳遞參數(shù)一樣把一個函數(shù)傳遞給另一個函數(shù),而且可以將一個函數(shù)作為另一個函數(shù)的結(jié)果返回。來看一看下面的函數(shù):

function callSomeFunction (someFunction, someArgument){

return someFunction(someArgument);

}

南昌網(wǎng)站建設(shè)公司技術(shù)人員提示:這個函數(shù)接受兩個參數(shù)。第一個參數(shù)應(yīng)該是一個函數(shù),第二個參數(shù)應(yīng)該是要傳遞給該函數(shù)的一個值.然后就可以像下面的例子一樣傳遞函數(shù)了:

function add10(num){

return num+10;

}

var result1 = callSomeFunction(addl0, 10);

alert(resultl); //20

function getGreeting (name){

return "Hello,"+name;

}

var result2 = callSomeFunction (getGreeting,"Nicholas");

alert(result2); //"Hello,Nicholas"

這里的SomeFunction()函數(shù)是通用的,即無論第一個參數(shù)傳遞進來的是什么函數(shù),它都會返回第一個參數(shù)后的結(jié)果。南昌網(wǎng)絡(luò)公司技術(shù)人員要提醒大家,還記得吧,要訪問函數(shù)的指針而不執(zhí)行函數(shù)的話,必須去掉函數(shù)名后面的那對圓括號。因此上面例子中傳遞給callSomeFunction()的是add10 和 getGreeting,而不是執(zhí)行它們之后的結(jié)果。

當(dāng)然,可以從一個函數(shù)中返回另一個函數(shù),而且這也是極為有用的一種技術(shù)。例如,假設(shè)有一個對象數(shù)組,我們想要根據(jù)某個對象屬性對數(shù)組進行排序。而傳遞給數(shù)組sort()方法的比較函數(shù)要接收兩個參數(shù),即要比較的值??墒?,我們需要一種方式來指明按照哪個屬性來排序。要解決這個問題,可以定義一個函數(shù),它接收一個屬性名,然后根據(jù)這個屬性名來創(chuàng)建一個比較函數(shù),下面就是這個函數(shù)的定義。

function createComparisonFunction( propertyName) {

return function (objectl,object2){

var valuel=objectl[propertyName];

var value2=object2[propertyName];

if (valuel return -1;

else if (valuel>value2){

return 1;

else {

return 0;

}

};

}

這個函數(shù)看起來有點復(fù)雜,但實際上無非就是在一個函數(shù)中嵌套了另一個函數(shù),而且內(nèi)部函數(shù)前面加了一個return操作符。在內(nèi)部函數(shù)接收到propertyName參數(shù)后,它會使用方括號表示法來取得給定屬性的值。取得了想要的屬性值之后,定義比較函數(shù)就非常簡單了。上面這個函數(shù)可以像在下面例子中這樣使用:

var data= [{name: "Zachary", age: 28), tname: "Nicholas",age: 29}];

data. sort( createComparisonFunction("name"));

alert (data[data[0].name); //Nicholas

data. sort(createComparisonFunction("age"));

alert(data[O].name); //Zachary

這里,我們創(chuàng)建了一個包含兩個對象的數(shù)組data。其中,每個對象都包含一個name屬性和一個age屬性。在默認(rèn)情況下,sort()方法會調(diào)用每個對象的toString()方法以確定它們的次序;但得到的結(jié)果往往并不符合人類的思維習(xí)慣。因此,我們調(diào)用createComparisonFunction(n name”)方法創(chuàng)建了一個比較函數(shù),以便按照每個對象的name屬性值進行排序。而結(jié)果排在前面的第一項是name為”Nicholas”,age是29的對象。然后,我們又使用了createComparisonFunction(”age”)返回的比較函數(shù),這次是按照對象的age屬性排序。得到的結(jié)果是name值為”Zachary”,age值是28的對象排在了第一位。

希望對廣大站長或網(wǎng)站建設(shè)公司或從事企業(yè)網(wǎng)站建設(shè)的團隊有所幫助,如對此不太理解的,可以與南昌網(wǎng)絡(luò)公司百恒網(wǎng)絡(luò)技術(shù)部聯(lián)系。我們很高與廣大站長和網(wǎng)站建設(shè)公司技術(shù)人員分享我們的技術(shù)和經(jīng)驗。


400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號
掃一掃打開百恒網(wǎng)絡(luò)小程序

歡迎您的光顧,我們將竭誠為您服務(wù)×

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務(wù) 售后服務(wù)
 
售后服務(wù) 售后服務(wù)
 
備案專線 備案專線
 
×