Javascript 未从事件内加入数据

Javascript 未从事件内加入数据,javascript,d3.js,Javascript,D3.js,我有一只海森堡。使用以下代码: const node = graphBox .selectAll("g.node") .data(nodes, d => d.title) .join("g") .attr("class", "node"); node.on("dblclick", d => { const refs = d3.select(this) .se

我有一只海森堡。使用以下代码:

    const node = graphBox
        .selectAll("g.node")
        .data(nodes, d => d.title)
        .join("g")
          .attr("class", "node");

    node.on("dblclick", d => {
        const refs =  d3.select(this)
            .selectAll("text.ref")
            .data(d.refs)
            .join("text");
        ...
    });
是一个
g
元素
d.refs
用数组填充。 当此代码单独运行时,
refs
显示为空。看起来是这样的:

refs: Pt
    _groups: []
    _parents: []
当我在refs分配之前停止调试器,并在console中运行相同的代码时,它会出现以下结果:

refs: Pt 
    _groups: [Array(1)]
    _parents: [g]

我真的被难住了。这是什么原因造成的

@GerardoFurtado再仔细想想,
未定义的
让我怀疑这个结论是否正确,或者至少,目标是否正确。除非它在服务器上运行,否则它应该记录
窗口
,而不是
未定义
。这甚至可能是一个臭名昭著的asnyc返回问题,即数据在常规执行期间不可用,而不是在调试器中暂停时加载。您能否提供有关代码的更多上下文,即加载数据的时间和地点以及如何调用此代码段?尝试将
console.log(nodes)
放在上述两条语句之前。如果您在浏览器中设置@altocumulus它可以是
未定义的
,这将非常有用:。无论如何,请随意更改复制目标,重新打开它,等等。@GerardoFurtado您更改了规则;-)严格模式是一个不同的规则集,不适用于箭头函数:仍然
window
@altocumulus你搞错了:我说过一个可能的解释是OP的所有代码都包装在严格的IIFE中:。仍然
未定义
。你的行动。