Javascript - 函数参数
Javascript - function argument
我正在学习Javascript,有点混淆了下面的用法。这些问题可能比 d3 更特定于 javaScript。
http://mbostock.github.com/d3/ex/sunburst.html
var arc = d3.svg.arc()
.startAngle(function(d) { return d.x; })
.endAngle(function(d) { return d.x + d.dx; })
.innerRadius(function(d) { return Math.sqrt(d.y); })
.outerRadius(function(d) { return Math.sqrt(d.y + d.dy); });
所以
- startAngle,endAngle等将函数作为参数。将参数作为一个函数而不仅仅是一个数字的理由是什么?
- 在完整代码中,没有定义"d"的位置。我几乎在所有 d3 程序中都能看到它。"d"有什么用?它是如何设置的或在哪里传递?
谢谢。
对于您的第一个问题:
d3.svg.arc
对象用于在饼图中创建切片。这些切片中的每一个都需要不同的开始角度和结束角度才能正确显示。
在d3.js
中,您不会为每个切片传递两个角度,而是提供一个函数,该函数d
一个参数,该参数是该切片的相应数据元素并返回角度。此处设置的其他参数也是如此。
另一个优点是,基准面可以包含多个属性,您可以决定哪个属性相对于可视化采用哪个部分。
你的第二个问题
当使用一个函数作为另一个函数的参数时,通常使用给定形式的函数表达式。d3.js
大多数用作参数的函数本身都会传入一个或两个参数(大多数情况下是需要转换的数据部分)。在函数表达式中,您需要(或至少应该)命名这些参数以解决它们。在示例中,大多数情况下,d
用作保存特定数据项的参数的参数名。
它不需要在其他地方定义,因为它只是一个普通的函数参数。如果您愿意,可以通过以下方式重写它:
function startAngleParam( d ) {
return d.x;
}
var arc = d3.svg.arc()
.startAngle( startAngleParam )
...
d
非常清楚地作为参数传递给匿名函数。据推测,这些函数可以将数字作为参数,或者用于更复杂的操作的函数(有点像String.replace()
如何获取替换字符串,或者运行结果数组并返回替换值的函数)
1:这是一个回调函数。当您将函数作为参数发送时,不会调用该函数,而是保留该函数并可以在以后调用,并且可以在需要时一遍又一遍地调用它。
2:参数 d
只是发送到回调函数的值,该函数使用它来生成结果。标识符名称d
仅在回调函数中定义,每当使用该函数时,该值都会像往常一样发送到函数中。
发送到回调函数的值是包含弧坐标的对象。当弧的坐标发生更改时,将调用回调函数来计算绘制弧线所需的其他值。
我还不能发表评论,但想补充一下 Sirko 的出色答案。他指出:
在 d3 中.js您不会为每个切片传递两个角度,而是提供一个函数,该函数接受一个参数d
,这是该切片的相应数据元素并返回角度。
我想补充一点,您可能还会遇到表单function(d, i) { ... }
的回调。当你看到这个时,d
指的是元素的数据,i
指的是它的索引 - 约定使用一个字母的缩写,但你可以随意调用参数。
在循环访问数据时,访问这两项可能会很有帮助。例如,在本教程中,数据和索引都用于构造条形图: http://mbostock.github.com/d3/tutorial/bar-1.html
- 函数参数中的数据与指定变量之间的任何性能差异
- AngularJS:我可以跳过函数参数回调吗
- 函数未将值作为参数传递
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 为什么不'我们在javascript中使用函数参数的数据类型
- 你好,这是测试用例,我必须在函数中传递n个参数
- JavaScript - 多参数函数,它是多个图像库的字符串
- 如何从两个参数函数返回随机整数
- 以无点风格在Ramda中编写一个无参数函数
- JS:将单参数函数转换为可链接函数
- 正则表达式类似于Javascript中的参数函数
- 将 $' 值传递给替换的关联参数函数
- "这个“;在参数函数中
- 如何向jquery插件发送参数函数
- 将参数函数Node.js从一个js传递到另一个js
- 如何在javascript参数函数中传递PHP post方法字符串
- 装饰 Javascript Promise.then 以便参数函数接收附加参数
- 正在分析setInterval ID'是的's参数函数
- 如何根据一个参数函数计算年龄
- 对象参数/函数和/或三元运算符混淆