【问题标题】:Can not call legacy function in javascript as delegate [duplicate]无法在javascript中调用旧函数作为委托[重复]
【发布时间】:2016-02-23 15:40:04
【问题描述】:

很抱歉这个非常愚蠢的问题,但为什么这段代码不起作用?

var ar = [1,2,3];
ar.forEach(console.log);

提前谢谢你。

【问题讨论】:

  • 定义“不工作”。不过,console.log 需要上下文。使用 console.log.bind(console) 或 (ES6) a => console.log(a)
  • “不起作用”是什么意思?我可以想到几个问题:1)日志需要一个不存在的参数,2)日志仅在某些浏览器的调试器中被调用
  • 谢谢@JanDvorak,这正是我所需要的:“需要上下文”

标签: javascript


【解决方案1】:

因为您需要向 .forEach 传递一个匿名函数:

ar.forEach(function(el, index, array){
  console.log(index);
});

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-03-13
  • 2018-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-20
  • 2021-05-31
相关资源
最近更新 更多