javascript - 函数没有返回值 : scope issue

标签 javascript node.js scope

<分区>

需要第二双眼睛……发现这有什么问题吗?我的内部函数没有返回值。我一定是把示波器搞砸了?

 function getGroups(account){
    var name;
   // name = 'assigned'; I work
    account.getGroups(function(err, groups) {
        //removed logic for simple debugging 
        name ='test';
        //return name;
    });
    return name;
}

在父函数中分配变量时,即 var name = 'assigned' 它有效。

最佳答案

您的 account.getGroups 可能是一个异步函数,它需要一个 callback 函数。这个回调函数,

function(err, groups) {
        //removed logic for simple debugging 
        name ='test';
        //return name;
    }

不会立即执行。因此,您的 return name; 语句会在您的 name = 'test'; 语句之前执行。

希望这是有道理的。


要从回调中获取更新值,您必须使 getGroups 异步或基于事件

制作异步很容易

function getGroups(account, callback){
    var name;
   // name = 'assigned'; I work
    account.getGroups(function(err, groups) {
        //removed logic for simple debugging 
        name ='test';
        callback(name);
    });

}

而不是为值调用函数(例如,'var groupname = getGroups(account)')你必须像下面那样做

getGroup(account, function (groupname){
   // do whatever you like with the groupname here inside this function
})

关于javascript - 函数没有返回值 : scope issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24500814/

相关文章:

javascript - 如何制作一个简单的 jQuery 按钮来切换元素的背景

javascript - 正则表达式删除第一个字母,如果它是 k 和最后一个下划线之后的所有内容(包括下划线)

javascript - 如何在从 Angular JavaScript 提供数据的页面上执行 Scrapy 和 Selenium?

javascript - Multer file.filename 和 file.path 未定义

javascript - Angular 指令 - 我可以有一个从父级继承的隔离范围吗?

javascript - 如何禁用默认的 Google Analytics 虚拟页面记录

mysql - Node.js MySQL 动态创建表

javascript - 事件发射器构造器

recursion - 如何在 Clojure 中生成内存递归函数?

javascript - 如何从 cloudinary React 小部件访问全局范围