gpt4 book ai didi

javascript - 如何在 javascript 中访问当前范围之外的变量?

转载 作者:数据小太阳 更新时间:2023-10-29 04:56:45 25 4
gpt4 key购买 nike

我正在用 javascript 编写一个应用程序,无法弄清楚如何在这个 jquery 解析中访问我的函数中声明的变量。在内部我可以访问全局变量,但我真的不想为这些值创建全局变量。

基本上,我想从 simulationFiles 变量中的 xml 文档中提取文件名。我检查节点属性是否与 simName 相等,并提取 xml 元素中的两个字符串,我认为这部分工作正常。

如何提取那些 xml 元素并将它们附加到局部变量?

function CsvReader(simName) {
this.initFileName = "somepath";
this.eventsFileName = "somepath";
$(simulationFiles).find('simulation').each(function() {
if ($(this).attr("name") == simName) {
initFileName += $(this).find("init").text();
eventsFileName += $(this).find("events").text();
}
});
}

最佳答案

CsvReader 函数中的 thiseach() 回调中的 this 不同(其中相反,它是迭代中的当前元素)。要在回调中访问外部函数的范围,我们需要能够通过另一个名称引用它,您可以在外部范围中定义该名称:

function CsvReader(simName) {
this.initFileName = "somepath";
this.eventsFileName = "somepath";
var self = this; // reference to this in current scope
$(simulationFiles).find('simulation').each(function() {
if ($(this).attr("name") == simName) {
// access the variables using self instead of this
self.initFileName += $(this).find("init").text();
self.eventsFileName += $(this).find("events").text();
}
});
}

关于javascript - 如何在 javascript 中访问当前范围之外的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2754819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com