【发布时间】:2014-01-22 04:52:48
【问题描述】:
我似乎不太了解函数何时可以访问外部/全局变量,何时不能。据我了解,在函数外部定义的变量可以在函数内部使用,因为对于它来说该变量是全局的......
但这似乎并不适用——或者我又犯了一个愚蠢的错误。
我有一个对象数组“knotenListe[]”。我使用一个 for 循环来调用一个函数来为每个对象绘制一个圆圈。作为参数,我使用对象本身“knotenHandle”和knotenListe[]数组中当前对象的索引作为“arrayPosition”:
function zeichneKnoten (knotenHandle,arrayPosition) {
console.log("Function called. Parameter arrayPosition=" + arrayPosition);
kreisListe[arrayPosition] = svg.append("circle")
.style("stroke", "white")
.style("fill", "grey")
.attr("r", 20)
.attr("cx", knotenHandle.positionX)
.attr("cy", knotenHandle.positionY)
.attr("id", knotenHandle.name)
.on("click", function(){
console.log("onClick triggered. arrayPosition=" + arrayPosition);
doStuff(arrayPosition);
});
}
我有两个 console.log 语句来检查 arrayPosition 的值。第一个工作正常,但 .on("click" 段中的第二个返回“undefined”。
我错过了什么? .on("click" 段中的函数从属于 zeichneKnoten 函数,对吗?我可以在 zeichneKnoten 函数中访问 arrayPosition 就好了。这是我对 JavaScript 变量/函数误解的一些一般层次结构,还是这可能是什么对我用来画圆圈的 d3.js 库来说特别吗?
感谢您的宝贵时间。
【问题讨论】:
标签: javascript function variables d3.js global-variables