Node.js / Javascript函数神秘地返回未定义

时间:2018-07-04 04:49:33

标签: javascript mysql node.js

所以我正在从Node.js的MYSql数据库中检索随机行

无论我尝试什么(此时有将近100种变体),此函数都会返回未定义的内容:

var randomIndex = function(){
  var rand;
  con.query("SELECT COUNT(ind) FROM people", function(err, result, fields){
    if (err) throw err;
    var count = result[0]["COUNT(ind)"];
    rand = Math.floor((Math.random() * count));
  });
  return rand;
}

我认为我最引人注目的替代方法是:

var randomIndex = function(){
  con.query("SELECT COUNT(ind) FROM summoner", function(err, result, fields){
    if (err) throw err;
    var count = result[0]["COUNT(ind)"];
    var rand = Math.floor((Math.random() * count));
    return rand;
  });
}

我也尝试使用function randomIndex(){而不是var randomIndex = function(){,但据我所知它们是完全相同的,对吧?

我已经尽可能地抛出了console.log(),这让我感到困惑。如果我在rand = Math.floor((Math.random() * count));之后登录rand,它将记录为0,所以我不明白在我尝试的两种情况下,它将如何返回undefined,除非以下两个条件均成立:

  1. 在我的第一个示例中,rand = Math.floor((Math.random() * count));仅在使用con.query函数时才向rand内部分配一个值,我认为这不是JS应该如何工作的?
  2. 在我的第二个示例中,randomIndex()函数的return不返回,而con.query函数的返回。

很抱歉这是一个不好的问题,或者已经以某种方式被问到了,我搜索了几个小时却没有找到任何地方。

0 个答案:

没有答案