Javascript对象返回失败
更新:我已经弄明白了。感谢您收看《下线》,让我思考这个承诺。虽然推荐的剧本没能让我达到目的,但我的想法确实做到了 为了让对象正确地通过,我需要从对象本身开始,重新构造代码以支持这一目的Javascript对象返回失败,javascript,object,properties,return,closures,Javascript,Object,Properties,Return,Closures,更新:我已经弄明白了。感谢您收看《下线》,让我思考这个承诺。虽然推荐的剧本没能让我达到目的,但我的想法确实做到了 为了让对象正确地通过,我需要从对象本身开始,重新构造代码以支持这一目的 var barBuildX = function(csv, domainColumnName, rangeMin, rangeMax, paddingInner, paddingOuter) { var x = { rMin: rangeMin, rMax: rangeMax, padI
var barBuildX = function(csv, domainColumnName, rangeMin, rangeMax, paddingInner, paddingOuter) {
var x = {
rMin: rangeMin,
rMax: rangeMax,
padIn: paddingInner,
padOut: paddingOuter,
domain: (function() {
var dom = [];
d3.csv(csv).then(function(data) {
data.forEach(function(d) {
dom[dom.length] = d[domainColumnName];
});
})
return dom;
})(),
};
console.log(x);
return x;
};
};
这是一个相当基本的子例程,用于使用满足d3.js scaleBand()函数所需的字段填充对象。该脚本的第一部分工作正常-基于提供的CSV文件中的“domainColumnName”构建域名数组。然而,第二部分,即我们实际构建将返回的“x”对象的部分,没有正常运行——没有写入控制台或带回我试图传递给它的任何数据。这尤其令人恼火,因为它应该只是设置属性值并返回对象以供其他地方使用。。。有什么想法吗
var barBuildX = function(csv, domainColumnName, rangeMin, rangeMax, paddingInner, PaddingOuter) {
var dom = [];
d3.csv(csv).then(function(data) {
console.log(data); //this works
data.forEach(function(d) {
dom[dom.length] = d[domainColumnName];
});
console.log(dom); //this works
var x = {
domain: dom,
rMin: rangeMin,
rMax: rangeMax,
padIn: paddingInner,
padOut: paddingOuter
};
console.log(x); //this DOES NOT work
return x; //Undefined... / Type Error
});
};
在变量拼写上有一个不同的注释,不幸的是我在复制到这个线程时犯了一个错误。在不工作的原始源代码中,变量拼写没有差异
我在Chrome控制台中收到的错误消息是:“UncaughtTypeError:无法读取未定义的属性'domain'”
因此,返回对象是未定义的…您没有从函数中返回承诺,这就是为什么您将得到
未定义的
作为返回值。这样做:
var barBuildX = function(csv, domainColumnName, rangeMin, rangeMax, paddingInner, PaddingOuter) {
var dom = [];
return d3.csv(csv).then(function(data) {
console.log(data); //this works
data.forEach(function(d) {
dom[dom.length] = d[domainColumnName];
});
console.log(dom); //this works
var x = {
domain: dom,
rMin: rangeMin,
rMax: rangeMax,
padIn: paddingInner,
padOut: paddingOuter
};
console.log(x); //this DOES NOT work
return x; //Undefined... / Type Error
});
};
// how to invoke the function:
barBuildX(...).then(x => {
console.log(x);
});
paddingOuter
的拼写与参数不同这看起来像是遇到了一个问题,只是这些值应该在您说不存在的地方定义。“这不起作用”和“未定义的…/类型错误”不是明确的问题陈述。您应该准确地引用错误消息,并说明从何处读取这些消息。“paddingOuter的拼写与参数不同”-这意味着您在说有错误之前,应该先获得两行参考错误。由于我正在脱机系统上工作,因此我在此处手动重新输入了代码。paddingOuter的拼写在原始源代码中是相同的…您需要提供一个实际演示您的问题的。理想情况下,作为一个整体。问题下面有一个编辑链接。