return в callback функции, вызываемой в loop'е
Всем привет!
Пишу extension для шаблонизатора, который получает через AJAX шаблон, а в нем находит текст между специфическими тегами и отправляет его на перевод (вызывает callback функцию, которая ищет соответствие полученной строки в JSON-библиотеки и отдает перевод). Теперь о самой проблеме. Все работает отлично, но в loop, когда проходит итерация, не работает return callback-функции. Упрощенно выглядит так: //Вариант первый, который нужен, но не работает var print = function (info) { return info.tits } //Вариант второй, работает, когда без return var print = function (info) { alert(info.tits) } //Эмуляция возвращенного массива var arr = []; var objOne = {tits: 'tide'} var objTwo = {tits: 'huge'} arr.push(objOne) arr.push(objTwo) //Упрощенная функции, перебирающий массив var parser = function () { for (var i in arr) { print(arr[i]) }} parser(); print(arr[0]) возвращает все правильно. parser() возвращает undefined, хотя если заменить в функции print return на alert, например,то все работает. помогите советом ) Спасибо! |
brokenwind,
<script> //Вариант первый, который нужен, но не работает var print = function (info) { return info.tits } //Эмуляция возвращенного массива var arr = []; var objOne = {tits: 'tide'} var objTwo = {tits: 'huge'} arr.push(objOne) arr.push(objTwo) //Упрощенная функции, перебирающий массив var parser = function () { for (var i=0; i<arr.length; i++) {alert(print(arr[i]))} } parser(); </script> |
нет, это совсем не то
мне не alert нужен, а return |
А с чего бы функция parser должна что-то возвратить? Это функция print возвращает некое значение при ее вызове в цикле в функции parser... и все. Больше никуда это значение не девается.
|
То есть, в твоем случае надо как-то так:
var print = function (info) { return info.tits; } var arr = []; var objOne = {tits: 'tide'}; var objTwo = {tits: 'huge'}; arr.push(objOne); arr.push(objTwo); var parse = function () { //не parser, а parse. Так правильнее. result = ""; for (var i=0; i<arr.length; i++) { result += print(arr[i]); } return result; } alert(parse()); |
нет, это совсем не то, что нужно )
но на мысль вы меня натолкнули, спасибо! ) |
Часовой пояс GMT +3, время: 03:03. |