Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript node.js全局变量有问题_Javascript_Node.js - Fatal编程技术网

Javascript node.js全局变量有问题

Javascript node.js全局变量有问题,javascript,node.js,Javascript,Node.js,我不太懂javascript。我无法定义全局变量 var data = 'empty'; connection.query('SELECT * FROM deneme',function(err, rows, fields){ if (err) throw err; data = rows; }); console.log(data); 通常,控制台需要返回行数据,但返回空数据。如何从函数内部查询行?如何定义全局变量?它不起作用的原因是您的控制台。log在异步代码块之外。基

我不太懂javascript。我无法定义全局变量

var data = 'empty';

connection.query('SELECT * FROM deneme',function(err, rows, fields){
    if (err) throw err;
    data = rows;
});

console.log(data);

通常,控制台需要返回行数据,但返回空数据。如何从函数内部查询行?如何定义全局变量?

它不起作用的原因是您的
控制台。log
在异步代码块之外。基本上是这样的:

  • 数据
    设置为
  • 连接
    发出数据库请求
  • console.log
    激发(
    data
    在该点为
    empty
  • 接收到数据库响应
  • 回收火灾
  • 数据
    设置为
  • 因此,为了获得您想要的内容,只需将
    console.log
    语句放入异步块代码中:

    var data = 'empty';
    
    connection.query('SELECT * FROM deneme',function(err, rows, fields){
        if (err) throw err;
        data = rows;
        console.log(data);
    });
    

    这不是全局变量定义的问题,而是尝试以同步方式使用异步方法。那是不可能的。我写了一个类比,也许它有助于你理解它:你将如何返回值?你不能。这不是异步编程的方式。