问题在javascript / NodeJS中的variables范围

我有访问NodeJS中的variables的值的问题。 这里是一些示例代码和我得到的结果。

for (var z=0, zMessageCount = Description.length; z<zMessageCount; z++){ console.log(z); if(SomeOtherColumnValue[z] > 9){ client.query('SELECT * FROM my_table WHERE some_column=' + ColumnValue[z], function (err, results) { if(results < 1){ console.log(z); } }) } } 

这是我遇到的问题。 在“for”循环中,z的值是从0到14.但是,当我尝试从client.query函数访问它时,它的值是15.它不会为每个循环自身添加1。 有什么我在这里失踪?

你需要在函数中包装z以提供范围。

 for (var z=0, zMessageCount = Description.length; z<zMessageCount; z++){ console.log(z); if(SomeOtherColumnValue[z] > 9){ zQuery(z); } } function zQuery (z) { client.query('SELECT * FROM my_table WHERE some_column=' + ColumnValue[z], function (err, results) { if(results < 1){ console.log(z); } }); }