干熟妇在线视频午夜剧场一级A级|99成人香视频日本两性激情视频|久久 午夜福利无码精品人妻一区|热久久超碰精品精品少妇一区二区|五月天综合在线国产一区免费视频|亚洲成人中心热re久久99|亚洲国产怡红院丁香五月综合h|玖玖九久久久午夜射精视频

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

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

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

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

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

因?yàn)镋CMAScript中的函數(shù)名本身就是變量,所以函數(shù)也可以作為值來(lái)使用。也就是說(shuō),不僅可以像傳遞參數(shù)一樣把一個(gè)函數(shù)傳遞給另一個(gè)函數(shù),而且可以將一個(gè)函數(shù)作為另一個(gè)函數(shù)的結(jié)果返回。來(lái)看一看下面的函數(shù):

function callSomeFunction (someFunction, someArgument){

return someFunction(someArgument);

}

南昌網(wǎng)站建設(shè)公司技術(shù)人員提示:這個(gè)函數(shù)接受兩個(gè)參數(shù)。第一個(gè)參數(shù)應(yīng)該是一個(gè)函數(shù),第二個(gè)參數(shù)應(yīng)該是要傳遞給該函數(shù)的一個(gè)值.然后就可以像下面的例子一樣傳遞函數(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ù)是通用的,即無(wú)論第一個(gè)參數(shù)傳遞進(jìn)來(lái)的是什么函數(shù),它都會(huì)返回第一個(gè)參數(shù)后的結(jié)果。南昌網(wǎng)絡(luò)公司技術(shù)人員要提醒大家,還記得吧,要訪(fǎng)問(wèn)函數(shù)的指針而不執(zhí)行函數(shù)的話(huà),必須去掉函數(shù)名后面的那對(duì)圓括號(hào)。因此上面例子中傳遞給callSomeFunction()的是add10 和 getGreeting,而不是執(zhí)行它們之后的結(jié)果。

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

}

};

}

這個(gè)函數(shù)看起來(lái)有點(diǎn)復(fù)雜,但實(shí)際上無(wú)非就是在一個(gè)函數(shù)中嵌套了另一個(gè)函數(shù),而且內(nèi)部函數(shù)前面加了一個(gè)return操作符。在內(nèi)部函數(shù)接收到propertyName參數(shù)后,它會(huì)使用方括號(hào)表示法來(lái)取得給定屬性的值。取得了想要的屬性值之后,定義比較函數(shù)就非常簡(jiǎn)單了。上面這個(gè)函數(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)建了一個(gè)包含兩個(gè)對(duì)象的數(shù)組data。其中,每個(gè)對(duì)象都包含一個(gè)name屬性和一個(gè)age屬性。在默認(rèn)情況下,sort()方法會(huì)調(diào)用每個(gè)對(duì)象的toString()方法以確定它們的次序;但得到的結(jié)果往往并不符合人類(lèi)的思維習(xí)慣。因此,我們調(diào)用createComparisonFunction(n name”)方法創(chuàng)建了一個(gè)比較函數(shù),以便按照每個(gè)對(duì)象的name屬性值進(jìn)行排序。而結(jié)果排在前面的第一項(xiàng)是name為”Nicholas”,age是29的對(duì)象。然后,我們又使用了createComparisonFunction(”age”)返回的比較函數(shù),這次是按照對(duì)象的age屬性排序。得到的結(jié)果是name值為”Zachary”,age值是28的對(duì)象排在了第一位。

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


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

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

售前咨詢(xún) 售前咨詢(xún)
 
售前咨詢(xún) 售前咨詢(xún)
 
售前咨詢(xún) 售前咨詢(xún)
 
售前咨詢(xún) 售前咨詢(xún)
 
售前咨詢(xún) 售前咨詢(xún)
 
售后服務(wù) 售后服務(wù)
 
售后服務(wù) 售后服務(wù)
 
備案專(zhuān)線(xiàn) 備案專(zhuān)線(xiàn)
 
×