匿名函数范围混淆
如何将匿名函数中的值分配给全局variables或其范围外的variables。 比如下面的例子。 console.log(rows)
返回正确的数据,而console.log(result)
返回未定义
var result; this.query(sql).execute(function(error, rows) { console.log( rows ) result = rows; }); console.log( result );
Node.js是事件驱动的,这意味着大部分函数是asynchronous的。 execute
函数不会返回任何值,因为“returned”值在声明为第一个参数的匿名函数中,只有当查询已经执行并且数据库已经返回一个值时,才会调用该函数。 所以你的result
variables不包含任何值,因为没有什么可返回的。
** 编辑 **
即使在编辑之后,在将rows
分配给它之前 ,执行loggingvariablesresult
rows
也会被执行,因为匿名函数只有在查询完成后才会执行。
什么.execute
返回? 它可能只是处理由.query
返回的项目而不返回数组