1. 程式人生 > >JavaScript如何理解函式可以作為值

JavaScript如何理解函式可以作為值

函式作為值

因為 ES 中的函式名本身就是變數,所以函式也可以作為值來使用。也就是說,不僅可以像傳遞引數一樣把一個函式傳遞給另一個函式,也可以將函式作為另一個函式的結果返回。

理解上面的這段話是很有必要的,這兩種方式都可以讓我們更有效的解決一些特定的問題。

1. 函式作為引數
// 可以用來呼叫一個函式並給它傳遞一個引數,來獲得第一個返回值。
function callSomeFunction(someFunction, someArgument){
    return someFunction(someArgument);
}

function add(num) {
return num + 10; } function get(str) { return "hello," + str; } var result = callSomeFunction(add, 20); var string = callSomeFunction(get, "talon"); alert(result); // 30 alert(string); // hello,talon
2. 函式作為返回值

將函式作為返回值也是非常有用的,比如我們在使用 sort ( ) 方法來按照物件的某個屬性排序時,要給 sort ( ) 傳遞的引數函式就有很多種,而使用將函式作為返回值的方法就可以解決這個問題。

function createComparisonFunction(propertyName) {

    return function(obj1, obj2) {
        var value1 = obj1[propertyName];
        var value2 = obj2[propertyName];
        if(value1 < value2) {
            return -1;
        } else if (value1 > value2) {
            return 1;
        } else
{ return 0; } }; } var data = [ {name: "talon", age: 20}, {name: "zjaya", age: 19} ]; // 按 name 屬性排序 data.sort(createComparisonFunction("name")); alert(data[0].name) // talon // 按 age 屬性排序 data.sort(createComparisonFunction("age")); alert(data[0].name) // zjaya