2

尝试学习 D3.js 和 JavaScript 等内容 :) 所以这是我在书中看到的代码:

<script>
    function draw(data){
      d3.select("body")
              .append("div")
              .attr("class", "chart")
              .selectAll(".bar")
              .data(data.cash)
              .enter()
              .append("div")
              .attr("class", "bar")
              .style("width", function(d){return d.count/100 +"px"})
              .style("outline", "1px solid blue")
              .text(function(d){return Math.round(d.count)});
    }
</script>

我习惯于强类型语言,如 .NET 或 Java,所以这对我来说看起来很奇怪,在这句话中

.style("width", function(d){return d.count/100 +"px"})

它从哪里获得“d”的值?

4

1 回答 1

2

在这段代码中,匿名函数被传递但没有被调用。d参数由最终调用该函数的人传递给该函数——在这种情况下,d3 库将。

这是一个更简单的示例,类似于您问题中的代码片段:

doSomething(function (someParameter) {
    alert(someParameter);
});

这是库内部的类似函数定义:

function doSomething(someCallback) {
    var foo = 42;
    someCallback(foo);
}
于 2013-03-21T21:24:38.377 回答