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]);
}
与for
相比,我更喜欢map
,但是:
map
作为参数的函数应该有一个返回值,该返回值会缩减为map
应返回的数组。将 viod 函数传递给map
(如我的示例中所示)有何影响?map
返回一个数组。如果我不将其分配给变量(如我的示例中所示),会发生什么情况?- 有没有像
map
这样的void函数?
最佳答案
A function, which map becomes as an argument should have a return value to be reduces to an array which map should return. What impact has passing a viod function to a map, like in my example?
没有 return 语句的函数返回的值是未定义
。因此,如果您传递一个从不返回任何内容的函数来映射,它将创建一个长度等于原始数组的新数组,并且每个值都是未定义
。
map returns an array. What happens if I don't assign it to a variable, like in my example?
仍然会创建一个数组,但它会在创建后立即被丢弃,并很快被垃圾回收。这种行为可能会被 JS 引擎优化掉!
Is there any void function like map?
正如其他人所指出的,有一个 Array.prototype.forEach 函数可以迭代数组(类似于映射),但不会创建新数组或使用回调的结果以任何方式与其关联。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
关于javascript - 调用函数而不将其结果分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20123487/