为什么某些 JavaScript 变量通过在变量名称后放置 0 来访问

Why are some JavaScript variables accessed by placing a 0 right after the variable name?

本文关键字:访问 变量名 JavaScript 变量 为什么      更新时间:2023-09-26

假设你有一个对象文字:

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

还有一个匿名函数:

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

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

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

从您的链接中查看 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