我试图在函数之外的函数中记录一些变量,但在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)));
};发布于 2016-05-08 23:11:12
最明显的方法是在函数之外声明变量,这样它们就可以共享父作用域。例如,假设您有以下代码:
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发布于 2016-05-09 06:18:50
谢谢达蒙。这是答案的一部分..。我最初是这样做的,但是一直没有定义,这是因为我是在函数中声明它,而不是回调,而在函数中定义变量而不是回调本身,不会获得回调的结果。此外,我意外地在函数值中声明了另一个“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.谢谢。
https://stackoverflow.com/questions/37105685
复制相似问题