Javascript函数的问题

时间:2013-10-17 11:57:34

标签: javascript jquery

我需要了解这段代码。它是为我公司的前开发人员制作的,但我真的不太了解它是如何工作的......如果有人可以帮助我,我会贬低它。

var main= function(arr, fun) {
     var i= 0,
         max= arr.length,
         array= [];
     for (; i< max; i++) {
       array.push(fun(arr[i]));
     }
     return array;
};

8 个答案:

答案 0 :(得分:2)

它实际上是一个非常模糊的Array.prototype.map实现。我个人建议:

function array_map(arr,callback) {
    if( arr.map) return arr.map(callback);
    for( var i=0, l=arr.length, ret = []; i<l; i++) {
        ret[i] = callback(arr[i],i,arr);
    }
    return ret;
}

它使用浏览器的内置函数(如果存在),否则手动模拟它。

答案 1 :(得分:1)

如果您将“fun”这个参数视为函数名称,也许您可​​以理解它。在作为“fun”的输入参数运行后,你的代码只返回数组“arr”的结果。

如下所示:

var arr = [0, 1, 2];
function fun( arg ) {
    return arg + 1;
}

在我看来,像这样调用你的代码:

main(arr, fun);

它应该返回:

[1, 2, 3]

当然,我没有检查它是否真的正确,你可以参加测试〜

祝你好运

答案 2 :(得分:0)

var main= function(arr, fun) {
    //intialing variables
     var i= 0,
         max= arr.length,
         array= [];

    //looping the variables
     for (; i< max; i++) {
         //push values in to array after using the function passed
       array.push(fun(arr[i]));
     }
     return array;
};

//to test I have defined a function which adds 1
var res = main([1,2,3], function(val) {return val + 1});

alert(res);

Fiddle

答案 3 :(得分:0)

var main = function(arr, fun) {
     var i = 0, //starting a loop through the array at 0
         max = arr.length, //getting the number of items in the array
         array= []; //declaring a new array
     for (; i< max; i++) { //this is a loop that goes through all the values in the array
       array.push(fun(arr[i])); //this adds the values to the new array, using the function 'fun' to change the value
     }
     return array; //this returns the array
};

答案 4 :(得分:0)

它通过将函数arr的前一个数组fun的结果放入新数组中来创建一个新数组。

例如,如果fun得到数字的平方且arr为[1,2,3],main将返回[1,4,9]

答案 5 :(得分:0)

它创建了一个名为main的函数。此函数将数组和处理函数fun作为参数。它将数组的每个元素提供给fun函数,并将此调用的结果(fun(arr[i]))添加到新的array。例如,以下main函数的使用返回数组{2, 3, 4, 5}

main({1, 2, 3, 4}, function(item) {
    return item + 1;
});

答案 6 :(得分:0)

让我们分开代码:

// will create a function which accepts 2 parameters
var main= function(arr, fun) {

//variable declaration
var i= 0,
max= arr.length,  // get array length
array= [];       // create new array

// add function value (fun(arr[i])) to an array. arr is a parameter which is also an array
// fun(arr[i]) is a callback function which accepts 1 parameter (array one)
for (; i< max; i++) {
   array.push(fun(arr[i]));
}

// return the new array
 return array;
};

答案 7 :(得分:0)

你需要一个策略来处理不熟悉的结构。在Stackoverflow上提出一个全面的问题可能在短期内有所帮助,但可能不会加强你对“肌肉”的解释。

我建议首先确保您可以在调试器中运行代码,并在函数的第一行代码中设置断点。然后使用调试器回答诸如以下问题:

1)。什么进来?参数的类型有哪些。

2)。返回什么

然后你会注意到乐趣实际上是一种功能。那你的函数从哪里调用?什么函数作为第二个参数传递。

然后你可能想知道一些你以前没见过的构造,例如array.push()的构造。所以快速谷歌回答说。

突然你理解并锻炼了你的“肌肉”。如果你仍然感到困惑,你可能会在这里问一个更好,更准确的问题。