匿名功能范围混乱

时间:2011-06-08 02:50:24

标签: javascript node.js scope anonymous-function

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

var result;
this.query(sql).execute(function(error, rows) {
    console.log( rows )
    result = rows;
});
console.log( result );

2 个答案:

答案 0 :(得分:8)

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

** 编辑 **

即使在您进行编辑之后,记录变量result的行也会在之前执行 rows,因为匿名函数只会执行稍后,当查询完成时。

答案 1 :(得分:0)

.execute返回什么?它可能只是处理.query返回的项而不返回数组