gpt4 book ai didi

javascript - 匿名函数中 undefined variable

转载 作者:搜寻专家 更新时间:2023-11-01 05:25:47 25 4
gpt4 key购买 nike

function updateServerList() {
var i;

for (i=0; i < servers.length; i++) {
var server = servers[i];
var ip = server['serverIp']


var html = constructServer(i);
var divId = '#server' + ip.replace(new RegExp("\\.", "mg"), "-");
var visible = $(divId).find(".server_body").is(":visible");
var div = $(divId);
div.html(html);

// Set div class.
var prevState = div.attr('class').substring(7)
if (prevState != server['state']) {

if (server['state'] == 'ok') {
console.debug(server);
div.slideUp('fast', function(server) {
$(this).removeClass();
$(this).addClass('server_ok');
var id = ipToId[server['serverIp']];
console.debug(id);
if (id == 0) {
adjacentIp = servers[1]['serverIp'];
adjacentDivId = '#server' + adjacentIp.replace(new RegExp('\\.', 'g'), '-');
$(adjacentDivId).before(this);
}
}).delay(1000);
div.slideDown();
}
}
}

console.debug 显示 server 已定义,但在匿名函数内部,server 未定义。我哪里出错了?

最佳答案

因为 server 是函数的参数,所以它在更高级别屏蔽了 server 的值。您需要将服务器传递给函数,或者删除函数参数。我会选择后者,因为 slideUp 没有提供传递参数的方法。你可以做到,但它不必要地复杂;它看起来像下面这样

div.slideUp('fast', (function(server) { 
return function(){
// your stuff here, server is now 'closed in', i.e. in a closure
}
})(server)); // <-- this server is the current value in the loop

您在这里所做的是立即调用一个新函数,传入参数服务器,并返回一个接收该值的新函数。

关于javascript - 匿名函数中 undefined variable ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7666355/

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