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, время: 16:58. |