Растолкуйте, пожалуйста код (внутри)
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, время: 04:29. |