调用函数而不将其结果赋给变量

时间:2013-11-21 14:24:09

标签: javascript

map函数看起来比for循环要好得多:

var arr = ["Apple", "Orange"];
// map example
arr.map(function(item){ eat(item); });
// for example
for(var i=0; i<arr.length; i++){
    eat(arr[i]);
}

我希望map超过for,但是:

  1. map成为参数的函数应该有一个返回值,以减少为map应该返回的数组。将viod函数传递给map有什么影响,就像在我的例子中一样?
  2. map返回一个数组。如果我不将它分配给变量会发生什么,比如我的例子?
  3. 是否有像map
  4. 这样的空白函数

5 个答案:

答案 0 :(得分:2)

  

一个函数,map作为参数应该有一个返回值,减少到一个应该返回map的数组。将viod函数传递给地图有什么影响,比如我的例子?

没有return语句的函数返回的值是undefined。因此,如果传递一个永远不会返回任何内容的函数来映射,它将创建一个长度等于原始数组的新数组,每个值为undefined

  

map返回一个数组。如果我不将它分配给变量会发生什么,比如我的例子?

仍然会创建一个数组,但它会在创建后立即丢弃并很快收集垃圾。这种行为可能会被JS引擎优化掉!

  

是否有像地图一样的虚函数?

正如其他人所指出的,有Array.prototype.forEach函数迭代数组(类似于map)但不创建新数组或以任何方式使用与之关联的回调结果。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

答案 1 :(得分:1)

您正在寻找.forEach()

您可能会发现,浏览MDN documentation是积累此类信息的更好方式,而不是提问。至少现在我希望这个答案可以减轻你的痛苦。

编辑 - 对于问题1,它不会伤害任何东西。 .map()函数将构建一个包含undefined条目的数组。 (我想。)

对于2,它也没关系。忽略函数的返回值永远不是问题,至少就运行时而言。

答案 2 :(得分:1)

<强> 1。一个函数,map作为参数应该有一个返回值,减少到一个应该返回的数组。将viod函数传递给地图有什么影响,比如我的例子?

var numbers = [1, 4, 9];
var mapped = numbers.map(function(){
    //do nothing
});
console.log(numbers);//[1, 4, 9]
console.log(mapped);//[undefined, undefined, undefined]

初始数组将保持不变,您将得到一个带有未定义数组的数组

2。 map返回一个数组。如果我不将它分配给变量会发生什么,比如我的变量 例如吗

什么都会发生,你松开了改变过的数组。

3.是否有像地图一样的无效功能?

所有数组方法都不会修改引用数组, EG

Array.concat(value1[value2[value...]])
Array.every(function)
Array.filter(function)
Array.forEach(function)
Array.join(delimeter)
Array.indexOf(searchStr[, startIndex])
Array.lastIndexOf(searchStr[, startIndex])
Array.map(function) .... etc

Array.splice(), push, pop, shift, unshift,.. etc会改变

答案 3 :(得分:0)

您正在寻找的是forEach method

var arr = ["Apple", "Orange"];
arr.forEach(eat);

答案 4 :(得分:0)

forEach数组实例方法。