0

假设您有一个对象文字:

var d = {
    x: +'35',
    y: '25'
};

还有一个匿名函数:

function (d) {
    return d.y0 + d.y;
}

当我试验这段代码时,我得到“未定义”代替 d.y0。但是有很多 d3.js 代码通过将 0 附加到它的键来访问一个值。这个 0 有什么作用?

4

2 回答 2

2

在 JavaScript 中,d.y0除非d有一个名为 的属性,否则它是未定义的y0。我对 d3 不熟悉,但如果它使用纯 JavaScript,那么他们可以引用附加 0 的属性的唯一方法是,他们引用属性的对象是否具有具有该名称的属性。

于 2012-06-28T22:47:03.310 回答
2

查看链接中的 javascript 源代码,y0 是 d3 中使用的内部名称,用于指代数据集合中第一个点的 y 坐标,例如:

function d3_svg_lineBundle(points, tension) {
  var n = points.length - 1;
  if (n) {
    var x0 = points[0][0],
        // Here
        y0 = points[0][1],

或者

function d3_svg_lineBasis(points) {
  if (points.length < 3) return d3_svg_lineLinear(points);
  var i = 1,
      n = points.length,
      pi = points[0],
      x0 = pi[0],
      // Here
      y0 = pi[1],

将“0”附加到属性名称绝对没有什么特别之处!

代码示例来自这个 js 文件: http://mbostock.github.com/d3/d3.js? 1.29.1

于 2012-06-29T07:11:34.197 回答