我正在尝试在函数外部的函数中记录一些变量,但是在函数中js中的变量是使用该特定函数确定的,而不是全局变量,所以我不能真正使用这些变量。
正如您在下面的代码片段中所看到的,我有一个函数和该函数的回调,我正在尝试记录的是在代码底部的if语句中。 console.log的结果是未定义的。
有没有一种简单的方法可以在函数中外化变量?
非常感谢你。
var xml;
var nodelist;
var callLDAP = function (username, callback) {
var LDAPOptions = {
"LDAPOptions" : {
"filter" : {
"$" : filter
}
}
}
var options = {};
options.location = "callLDAP.xsl";
var xml = converter.toXML('badgerfish', LDAPOptions);
options.xmldom = XML.parse(XML.stringify(xml));
transform.xslt(options, function (err, nodelist, abortinfo) {
if (err) {
session.out.write(err);
} else {
callback(err, converter.toJSON('badgerfish', nodelist.item(0)));
}
});
return xml;
};
var node;
var ldap_response = callLDAP(username, function (error, node) {
if (error) {
console.log("Error @ldapResponse");
} else {
return node;
}
}
);
if (user == 'debugMode'){
console.debug("***NODE: " + node);
console.debug("***nodelist: " + XML.stringify(nodelist.item(0)));
};
答案 0 :(得分:0)
最明显的方法是在函数之外声明变量,使它们共享父作用域。例如,假设您有以下代码:
function foo() {
var bar = 1;
}
foo();
console.log(bar); // error - bar is not defined
相反,只需执行以下操作:
var bar;
function foo() {
bar = 1;
}
foo();
console.log(bar); // 1
答案 1 :(得分:0)
谢谢达蒙。 这是答案的一部分......我原本就是这样做了,但是一直没有定义,这是因为我在函数而不是回调中声明它,并在函数中定义变量而不是回调本身,不会收到回调的结果。 另外,我不小心宣布另一个' var'函数值中的语法,它创建另一个变量而不是使用全局变量。
function callLDAP (username, callback) {
var LDAPOptions = {
"LDAPOptions" : {
"filter" : {
"$" : filter
}
}
}
var options = {};
options.location = "callLDAP.xsl";
var xml = converter.toXML('badgerfish', LDAPOptions);
options.xmldom = XML.parse(XML.stringify(xml));
transform.xslt(options, function (err, nodelist, abortinfo) {
if (err) {
session.out.write(err);
} else {
callback(err, converter.toJSON('badgerfish', nodelist.item(0)));
}
});
};
var node_results;
callLDAP(username, function (error, node) {
if (error) {
console.log("Error @ldapResponse");
} else {
node_results = node;
}
}
);
if (user == 'debugMode'){
console.debug("***NODE_Results: " + node_results);
}; //should output the results from the function call.
谢谢。