首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在javascript函数中记录输出或赋值变量

在javascript函数中记录输出或赋值变量
EN

Stack Overflow用户
提问于 2016-05-08 22:58:16
回答 2查看 49关注 0票数 0

我试图在函数之外的函数中记录一些变量,但在js中,函数中的变量的作用域是该特定函数,而不是全局函数,因此我不能真正使用这些变量。

正如您在下面的代码片段中所看到的,我为该函数设置了一个函数和回调函数,我要记录的是代码底部的if语句。console.log的结果是未定义的。

是否有一种简单的方法将函数中的变量外部化?

非常感谢你的进步。

代码语言:javascript
复制
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)));
};
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-08 23:11:12

最明显的方法是在函数之外声明变量,这样它们就可以共享父作用域。例如,假设您有以下代码:

代码语言:javascript
复制
function foo() {
  var bar = 1;
}

foo();
console.log(bar); // error - bar is not defined

相反,只需执行以下操作:

代码语言:javascript
复制
var bar;
function foo() {
  bar = 1;
}

foo();
console.log(bar); // 1
票数 0
EN

Stack Overflow用户

发布于 2016-05-09 06:18:50

谢谢达蒙。这是答案的一部分..。我最初是这样做的,但是一直没有定义,这是因为我是在函数中声明它,而不是回调,而在函数中定义变量而不是回调本身,不会获得回调的结果。此外,我意外地在函数值中声明了另一个“var”语法,它创建了另一个变量,而不是使用全局变量。

代码语言:javascript
复制
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.

谢谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37105685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档