小编The*_*dow的帖子

concat和push之间的区别?

为什么返回push方法会导致"Uncaught TypeError:acc.push不是函数".但是返回concat会产生正确的解决方案吗?

[1, 2, 3, 4].reduce(function name(acc, curr) {
  if (even(curr)) {
    return acc.push(curr);
  }
  return acc;
}, []);


function even(number) {
  if (number % 2 === 0) {
    return true;
  }
  return false;
}
Run Code Online (Sandbox Code Playgroud)

[1, 2, 3, 4].reduce(function name(acc, curr) {
  if (even(curr)) {
    return acc.concat(curr);
  }
  return acc;
}, []);


function even(number) {
  if (number % 2 === 0) {
    return true;
  }
  return false;
}
Run Code Online (Sandbox Code Playgroud)

javascript

30
推荐指数
4
解决办法
2万
查看次数

闭包和 funarg 问题之间的区别?

我有一个错误的理解,过滤器功能是向下的 funarg 问题的一个例子吗?我在源面板下使用 chrome 调试器,并在范围部分下注意到了这一点。

我的描述截图

过滤器函数参数cb是闭包还是strainer闭包函数?我发现很难在网上整理有关闭包和 funarg 问题的信息。我显然不明白 funarg 问题或闭包,需要一些帮助吗?

function strainer(collection, cb) {
  return collection.reduce(function inner(acc, curr) {
    if (cb(curr)) {
      return acc.concat(curr);
    }
    return acc;
  }, []);
}

function even(number) {
  if (number % 2 === 0) {
    return true;
  }
  return false;
}

var collection = [1, 2, 3, 4, 5];

strainer(collection, even);
Run Code Online (Sandbox Code Playgroud)

背景:我的印象是私有变量返回到外部环境创建了闭包,但该示例看起来有所不同。

下面的 flintstones 函数示例在引号函数的范围内有闭包。(我认为这是向上的 funarg 问题)

function strainer(collection, cb) {
  return collection.reduce(function inner(acc, curr) {
    if (cb(curr)) {
      return acc.concat(curr); …
Run Code Online (Sandbox Code Playgroud)

javascript closures first-class-functions

0
推荐指数
1
解决办法
370
查看次数