0

我似乎无法理解为什么是:

var enter = circle.enter().append("circle");

enter.attr("cy", 90);

enter.attr("cx", function(d) {
  return d;
});

enter.attr("r", function(d) {
  return Math.sqrt(d);
});

等于:

   svg.selectAll("circle")
    .data([32, 57, 112, 293])
    .enter().append("circle")
    .attr("cy", 90)
    .attr("cx", String)
    .attr("r", Math.sqrt);

在 cx 部分,它声明了一个函数,它只返回输入参数 d 而不对其做任何事情。这又是怎么变成的.attr("cx", String)

Math.sqrt

根据我有限的理解,.data()返回 d3 对象。.enter().attr()都使用其数据点对选择数组中的每个元素进行操作。

然而,这种语法对我来说似乎很陌生,虽然我知道cxMath.sqrt从数据数组中获取它们的值,但我似乎无法理解。也缺乏()inStringMath.sqrt

4

1 回答 1

0

在这两种情况下,您都将函数传递给各自的属性。

在第一个示例中,它是一个匿名函数,其主体中基本上没有或只有一个函数调用。通过直接在函数体内传递调用的函数,您只需节省一些空间和一些函数调用。

于 2013-06-21T15:11:05.720 回答