d3.js变量未定义,但在Firefox控制台中,它可以工作

d3.js variable not defined, yet in Firefox console, it works

本文关键字:工作 控制台 Firefox js 变量 未定义 但在 d3      更新时间:2023-09-26

>我正在尝试读取一些csv数据,选择一个特定的列(SST),并创建一个数组,其中每个项目是:{ x:row#,y:SST_for_that_row }。

<script src="http://d3js.org/d3.v3.min.js"></script>
<script>
var dat=[];
d3.csv("stratus2.txt", function(t) {
dat = t;
});
f=dat.map(function(d,i) { 
return {x:i,y:d.SST} 
</script>

我的 Firefox 控制台显示"dat"变量已成功加载,但"f"为空。 但是,如果我直接在控制台中键入以下内容,它会加载正常。

f=dat.map(function(d,i) { 
return {x:i,y:d.SST} 

是否存在某种范围界定问题?提前感谢,本

我认为您在保留地图并返回 csv 回调时遇到了问题。 正在发生的事情是你的csv代码还没有完成(dat 没有设置为 t),但回调不会阻塞(d3.csv() 是异步的),所以你的 javascript 继续运行,留下一个空的映射。

<script src="http://d3js.org/d3.v3.min.js"></script>
<script>
var dat=[];
d3.csv("stratus2.txt", function(t) {
    dat = t;
    f=dat.map(function(d,i) { 
        return {x:i,y:d.SST};
    });
});
</script>

尝试这种方式,并查看Javascript同步与异步以获取更多信息。

这在控制台中起作用的原因是,当您输入这些代码行时,您的回调已经处理完毕,因此dat确实具有分配的值。