javascript / NodeJS中的变量范围问题

时间:2011-09-19 03:59:53

标签: javascript variables node.js

我在访问NodeJS中的变量值时遇到问题。这是一些示例代码和我得到的结果。

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。我在这里缺少什么吗?

1 个答案:

答案 0 :(得分:4)

您需要在函数中包含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);
      }
   });
}