Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не могу понять работу кода

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Pavelbeginner
Отправлено: 15 Февраля, 2012 - 00:48:08
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




вот код:

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function test()
  3. {
  4.                 alert(arguments.callee.loaded_img_num);
  5.                 if(arguments.callee.loaded_img_num != arguments.callee.geted_img_num)
  6.                 {
  7.                         arguments.callee.loaded_img_num += 1;
  8.                         alert(arguments.callee.loaded_img_num);
  9.                         return;
  10.                 }
  11.  
  12. }
  13.  
  14. test.loaded_img_num = 0;
  15. test.geted_img_num = 0;
  16.  
  17. test();
  18. test();
  19. test();
  20. test();
  21. test();
  22.  


Почему первый алерт выводит всегда 0, а второй выводит постоянно увеличивающееся значение, при том, что я обращаюсь к одной и той же переменной?
 
 Top
Bio man
Отправлено: 15 Февраля, 2012 - 01:34:47
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




Pavelbeginner пишет:
arguments.callee.loaded_img_num += 1;
инкремент тут просто так что ли?

(Отредактировано автором: 15 Февраля, 2012 - 01:34:59)

 
 Top
IllusionMH
Отправлено: 15 Февраля, 2012 - 02:07:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Pavelbeginner, мне кажется, или не хватает строк?
Если
CODE (javascript):
скопировать код в буфер обмена
  1. test.loaded_img_num = 0;
  2. test.geted_img_num = 0;

То кам может не выполнится условие
CODE (javascript):
скопировать код в буфер обмена
  1.  if(arguments.callee.loaded_img_num != arguments.callee.geted_img_num)
?

Получаем все нули (5 штук), откуда еще наращивающийся аллер - непонятно Ниндзя

P.S.
"MDN" пишет:
Note: You should avoid using arguments.callee() and just give every function (expression) a name.
Warning: The 5th edition of ECMAScript forbids use of arguments.callee() in strict mode.

Лучше уже юзать (внутри функуии)
CODE (javascript):
скопировать код в буфер обмена
  1. test.loaded_img_num
  2. test.geted_img_num


P.P.S. Не знаю где ты запускал этот код, но если просто заменить 1 строку
CODE (javascript):
скопировать код в буфер обмена
  1. test.geted_img_num = 4; // 0 -> 4

То получаем вывод (разбил по вызовам)
0 1
1 2
2 3
3 4
4
(лишний раз не срабатывает)
Никаких постоянных нулей нет

(Отредактировано автором: 15 Февраля, 2012 - 05:14:58)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB