匿名功能范围混乱

Hyd*_*erA 1 javascript scope anonymous-function node.js

如何将匿名函数内的值分配给全局变量或其范围之外的变量.例如,下面的例子.console.log(rows)返回正确的数据,而console.log(result)返回undefined

var result;
this.query(sql).execute(function(error, rows) {
    console.log( rows )
    result = rows;
});
console.log( result );
Run Code Online (Sandbox Code Playgroud)

Yan*_*hon 8

Node.js是事件驱动的,这意味着大多数函数都是异步的.该execute函数不返回任何值,因为"返回"值在声明为第一个参数的匿名函数中,只有在执行查询并且数据库返回了值时才会调用该函数.所以你的result变量不包含任何值,因为还没有什么可以返回.

**编辑**

即使你的编辑,在那里你登录的变量的行result执行之前分配rows给它,因为匿名函数只执行,当查询完成.