【发布时间】:2015-08-18 16:52:33
【问题描述】:
为什么使用 _.map() 的 reverse2 函数可以工作,但 arr.map() 在这种情况下不起作用?有语法问题吗?我一直想不通。
function reverse2(arr){
return _.map(arr, function(val,index, arr1){return arr1.pop();});
}
console.log(reverse2([1,2,3,4,5,6])); // logs [6,5,4,3,2,1]
function reverse3(arr){
return arr.map(function(val,index, arr1){return arr1.pop();});
}
console.log(reverse3([1,2,3,4,5,6])); // logs [6,5,4,undefined, undefined, undefined]
【问题讨论】:
-
永远不要在迭代数组时修改它。或者期望任何事情都能像那样工作。
-
原生的
map方法跳过了漏洞。所以不要从中删除元素。 -
看起来 _.map 在将数组传递给回调之前不会复制数组,就像 OEM 所做的那样。它也有一些其他的不符合项,但它们允许比原生更快的操作。
标签: javascript callback underscore.js higher-order-functions