JavaScript 的 'forEach' 的误解

标签 javascript

此功能正常工作:

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;
}

我试过同时使用 itemitem[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/

相关文章:

javascript - 为什么看起来整个 core-js 库都与我的 webpack 设置捆绑在一起?

javascript - 从深度未知的嵌套数组中删除项目

javascript - 为什么需要创建一个http服务器?

javascript - 如何从 math.floor 中获取重复的数字?

javascript从html输入中获取文本并将其用作另一个html输入的值

java - 在javascript中通过scriptEngine将多个参数传递给java函数

php - 为什么javascript无法识别php代码?

javascript - 变量未传递给 Ajax 调用 : undefined variable

JavaScript - 比较两个多维数组

javascript - 如何在 SVG 排队时而不是运行时检测并停止动画?