此功能正常工作:
function task02(arr) {
var out = [];
arr = arr.forEach(function(item, i){
(item > 0) ? out.push(1) : out.push(0);
});
return out;
}
而这个不是(输出 undefined
):
function task02(arr) {
arr = arr.forEach(function(item, i){
(item > 0) ? item = 1 : item = 0;
});
return arr;
}
我试过同时使用 item
和 item[i]
,但它不起作用。有人可以向我解释一下为什么这不起作用吗?
最佳答案
Can someone please explain to me, why this is not working?
JavaScript 是 pass/call/assign by value .这意味着为变量赋值不会神奇地改变另一个变量(或数组元素)的值。
更简单的例子:
var foo = 42;
var bar = foo;
foo = 21;
bar
的值仍为 42
。
在您的情况下,分配给 item
不会更改数组元素。
一如既往,如果您使用不熟悉的方法,read its documentation first .
关于JavaScript 的 'forEach' 的误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32559754/