使用map函数时,我得到什么'未捕获TypeError:结果不是函数'

时间:2015-05-09 22:52:34

标签: javascript

只是通过地图功能,不明白为什么我得到 [undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]即使在提供this值后使用回调,就像文档说的那样......

var numbers = [1,2,3,4,5,6,7,8];

var results = numbers.map(
  function(foo){
  console.log(foo * foo);
 }, results
);
results();

谢谢!

3 个答案:

答案 0 :(得分:3)

您传递给map()的函数需要返回您之后的结果。

var numbers = [1, 2, 3, 4, 5, 6, 7, 8];

var results = numbers.map(function(num) {
  return num * num; 
}); 

console.log(numbers); 

您的函数不会显式返回,因此它会在每次调用结束时返回undefined

来自Array.prototype.map()

  

map()方法创建一个新数组,其结果是在此数组中的每个元素上调用提供的函数。

答案 1 :(得分:3)

这是一种更清洁的方式:

var numbers = [1,2,3,4,5,6,7,8];

var getValues = function(data){
    console.log(data)
    return data;
    // do whatever with the array's values
}

numbers.map(getValues);

答案 2 :(得分:2)

  

使用map函数时,为什么会出现'未捕获的TypeError:结果不是函数'?

因为Array.protoypte.map 从不会返回一个函数。

  

15.4.4.19 Array.prototype.map ( callbackfn [ , thisArg ] )

     

callbackfn 应该是一个接受三个参数的函数。 map   对于数组中的每个元素,以递增方式调用 callbackfn 一次   从结果中订购并构造一个新的数组。