如何在其中访问在d3.json请求之外声明的变量

时间:2017-11-10 16:29:14

标签: javascript json asynchronous d3.js scope

我有一个变量Params传入作为makePlot函数的参数。我想在d3.json请求中访问它,但它是未定义的。见下文。

const makePlot = (Params) => {
  // Params defined here
  d3.json(`somedata.json`, (error, data) => {
  // Params not defined here
    data.forEach((d) => {
     d.Params.something = Number(d.Params.something);
     d.Params.somethingElse = Number(d.Params.somethingElse);
    }); 
};

有没有办法纠正这个问题?

1 个答案:

答案 0 :(得分:1)

嗯,Params(没有任何前置d.)在您的内部功能中随时可用。这被称为[封闭] https://stackoverflow.com/a/111111/444255),正常的javascript特征。

只需删除之前的d.

d是一个完全不同的变量,基本上是你正在迭代的data的第一级子元素。 (很可能是对象属性和数组成员)。