Проблема с переменной областью в JavaScript / NodeJS - PullRequest
1 голос
/ 19 сентября 2011

У меня проблемы с доступом к значению переменной в 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 for значение z изменяется от 0 до 14. Однако когда я пытаюсь получить к нему доступ из функции client.query, ее значение равно 15. Она не добавляет 1 к себе для каждого цикла. Я что-то упускаю здесь?

1 Ответ

4 голосов
/ 19 сентября 2011

Вам нужно заключить 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);
      }
   });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...