javascript回调如何知道它们的参数是什么?

时间:2016-04-02 15:04:10

标签: javascript d3.js callback

想象一下,我有以下情况:

var dataset = [5, 5, 5, 5, 5]

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

我无法理解javascript究竟知道我处理数据的方式,是否与 .text 方法的定义有关?

然后我读了这篇article并且更加困惑,因为它在我的案例中并不起作用。鉴于该代码:

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

我的输出是:

0

1

2

3

4

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

2 个答案:

答案 0 :(得分:1)

而不是

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

代码应该是:

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

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

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

答案 1 :(得分:1)

在.text()方法中会有 callback.apply(this,[this.err,this.someData]) “这”将指的是d3原型