javascript回调如何知道它们的参数

How javascript callbacks knows what are their parameters?

本文关键字:参数 何知道 回调 javascript      更新时间:2023-11-08

想象一下我有以下场景:

var dataset = [5, 5, 5, 5, 5]
d3.select("body").selectAll("p")
  .data(dataset)
  .enter()
  .append("p")
  .text(function(a) { return a;});

我不明白javascript是如何知道我在处理数据的,这与.text方法的定义有关吗?

然后我读了这篇文章,更加困惑,因为它对我来说不起作用。给定代码:

d3.select("body").selectAll("p")
  .data(dataset)
  .enter()
  .append("p")
  .text(function(err, data) { return data;});

我的输出是:

0
1
2
3
4

所以我的问题是:什么是惯例?它是如何实现的?

而不是

.text(function(err, data) { return data;});

代码应该是:

.text(function(data, index) { return data;});

因为d3回调将数据作为函数中的第一个输入,将索引作为函数的第二个输入。

看看这把小提琴:https://jsfiddle.net/m8h0maLn/1/

在.text()方法中callback.apply(this,[this.err,this.someData])"this"指的是d3原型