2013-04-02 2 views
0

У меня есть две функций, скажу:Немного запутался JavaScript области видимости переменной (одноуровневая)

GetCustomers() - получить список клиентов getCustomerDetials() - получить детализацию каждого клиента

Я бег getCustomers() и эта функция запускает внутри себя getCustomerDetails() ... Очевидно, что мне нужно перечислить всех клиентов и их данные.

Итак, здесь идет процесс.

getCustomers() загружает список всех идентификаторов клиента и перебирает каждый идентификатор клиента:

for(i = 0; i < array_count; i++); 

обжиг getCustomerDetails(id) по каждому из клиентов, найденных.

getCustomerDetails затем запускает свой собственный внутренний цикл:

for(i = 0; i < array_count; i++); 

к проходным каждой детали.

Проблема: у меня было два идентичных для цикла, работающих как от родительской функции, так и от внутренней функции.

В принципе, кажется, что моя константа для переменной цикла «i» обновляет родительский элемент для переменной «i» цикла и никогда не заканчивается!

Я изменил переменную «i» внутренней функции в i2, и все было хорошо снова.

Извините за длинное объяснение, но я просто хотел дать понять, что это нормальный и ожидаемый результат? Или что-то не так с моим кодом?

Я занимался несколькими языками (я опытный программист PHP и AS2), и я никогда не сталкивался с этим столкновением раньше ... Я не так хорош в JS, хотя так.

+0

Хорошие правки @ rightfold. Я, erm, [спросил уже] (http://stackoverflow.com/q/14257323/472495). – halfer

ответ

7

Я бы сказал, что переменные, объявленные внутри функций, остаются локальными?

Они делают; проблема в том, что вы не объявите переменную внутри функции.

Используйте var ключевое слово объявить переменные:

for (var i = 0; i < array_count; i++) 

Без этого ключевого слова, вы используете глобальную переменную.


Это должно быть описано в вашей книге JavaScript. Какой из них вы используете?

+0

ahh спасибо .. просто хотел подтвердить .. PS У меня нет книги JS.просто идущий по моей текущей логике программирования и пытающийся настроить/изучить JS через онлайн-образцы, учебные пособия и т. д., быстро попал на мои ноги JS, так как AS2, w/c, который я узнал из книги, и программировал в течение почти десятилетие, очень похож на JS .. кроме некоторых из этих причуд и вещей, таких как это .. у меня никогда не было этой проблемы с AS2 .. и PHP, если на то пошло. anyweh. Еще раз спасибо – BrownChiLD

+0

Мой вопрос был тонким приглашением _get book_, так что нам не нужно повторять его содержимое в форме SO-ответов вам. –

+0

о право. хе-хе спасибо .. хватаю одного в ближайшее время – BrownChiLD

Смежные вопросы