希岛爱理av免费一区二区,成人性教育av免费网址,欧美7777,在线免费日韩片

十年專注于品牌網站建設 十余年專注于網站建設_小程序開發_APP開發,低調、敢創新、有情懷!
南昌百恒網絡微信公眾號 掃一掃關注
小程序
tel-icon全國服務熱線:400-680-9298,0791-88117053
掃一掃關注百恒網絡微信公眾號
掃一掃打開百恒網絡微信小程序

百恒網絡

南昌百恒網絡

作為值的函數即將函數作為值使用的方法和實例

百恒網絡 2012-09-04 4880

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

function callSomeFunction (someFunction, someArgument){

return someFunction(someArgument);

}

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

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()函數是通用的,即無論第一個參數傳遞進來的是什么函數,它都會返回第一個參數后的結果。南昌網絡公司技術人員要提醒大家,還記得吧,要訪問函數的指針而不執行函數的話,必須去掉函數名后面的那對圓括號。因此上面例子中傳遞給callSomeFunction()的是add10 和 getGreeting,而不是執行它們之后的結果。

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

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;

}

};

}

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

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

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

希望對廣大站長或網站建設公司或從事企業網站建設的團隊有所幫助,如對此不太理解的,可以與南昌網絡公司百恒網絡技術部聯系。我們很高與廣大站長和網站建設公司技術人員分享我們的技術和經驗。


400-680-9298,0791-88117053
掃一掃關注百恒網絡微信公眾號
掃一掃打開百恒網絡小程序

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

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務 售后服務
 
售后服務 售后服務
 
備案專線 備案專線
 
×
主站蜘蛛池模板: 昌宁县| 微山县| 安新县| 万荣县| 五原县| 建宁县| 昆山市| 砚山县| 永和县| 女性| 东丽区| 中宁县| 大关县| 宜章县| 文成县| 苍梧县| 清丰县| 盐津县| 湾仔区| 清苑县| 且末县| 手游| 永靖县| 斗六市| 陇南市| 托克托县| 新民市| 涟水县| 绥阳县| 红原县| 上杭县| 永城市| 平利县| 凉城县| 桂林市| 大城县| 吕梁市| 耿马| 肥西县| 孟州市| 绥芬河市|