Растолкуйте, пожалуйста код (внутри)
socket.on('data', function (data) { data.__sock = parseInt(data.__sock); if(data.__sock > 0 && data.__sock !== userId) return; for (f in data) { if(f !== undefined && typeof window[f] == 'function') { var func = window[f]; func(data[f]); } else if(f !== undefined && f.indexOf(".") != -1) { var re = /([a-z]{1,})\.([a-z]{1,})/i; found = f.match(re); if(typeof window[found[1]] == 'object' && typeof window[found[1]][found[2]] == 'function') { var func = window[found[1]][found[2]]; func(data[f]); } } } }); что-то совсем я потерялся, что и когда запускается?. |
Может так доходчивей ?
socket.on('data', function (data) { data.__sock = parseInt(data.__sock); if(data.__sock > 0 && data.__sock !== userId) return; for (f in data) { if(f !== undefined && typeof window[f] == 'function') { var func = window[f];func(data[f]); return; } if(f !== undefined && f.indexOf(".") != -1) { var re = /([a-z]{1,})\.([a-z]{1,})/i; found = f.match(re); if(typeof window[found[1]] == 'object' && typeof window[found[1]][found[2]] == 'function') { var func = window[found[1]][found[2]]; func(data[f]); } } } }); |
хотелось бы услышать комментарии по прохождению цикла фор
|
Код не мой, я просто размести объяву? :no:
|
по пятницам, я так понимаю, здесь не принято подавать?..
(нико кланяясь) дякуэмо вам!!! |
deivan,
Здесь сложно объяснить, поскольку в цикле тестируются переменные, не описанные в теле данной функции, тестируется наличие и тип И, в зависимости от результата присваиваются глобальные имена |
deivan,
а в поиске посмотреть как работает цикл for in религия не позволяет? и чем он отличается от цикла со счётчиком for ? |
dmitriymar, мое непонимание не касается принципа работы цикла.
А вот Deff все верно понял - я с трудом понимаю что там в глобальную область уходит... (нашел кусок чужого кода, он интересно построен, захотелось разобраться.. ) |
Ксать вот эта фигня f !== undefined ) может и неверна
alert(f !== undefined ) Наверное так <script> alert(typeof f != 'undefined' ) var f=1; alert(typeof f != 'undefined' ); </script> |
socket.on('data', function (data) { data.__sock = parseInt(data.__sock); if(data.__sock > 0 && data.__sock !== userId) return; for (f in data) { if(typeof f != 'undefined' && ) return; if(typeof window[f] == 'function') { var func = window[f];func(data[f]); return; } if(f.indexOf(".") != -1) { var re = /([a-z]{1,})\.([a-z]{1,})/i; found = f.match(re); if(typeof window[found[1]] == 'object' && typeof window[found[1]][found[2]] == 'function') { var func = window[found[1]][found[2]]; func(data[f]); } } } }); |
Часовой пояс GMT +3, время: 07:26. |