Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.05.2014, 14:31
Новичок на форуме
Отправить личное сообщение для brokenwind Посмотреть профиль Найти все сообщения от brokenwind
 
Регистрация: 14.04.2014
Сообщений: 6

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, например,то все работает.

помогите советом )

Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 25.05.2014, 14:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 31,366

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>
Ответить с цитированием
  #3 (permalink)  
Старый 25.05.2014, 17:05
Новичок на форуме
Отправить личное сообщение для brokenwind Посмотреть профиль Найти все сообщения от brokenwind
 
Регистрация: 14.04.2014
Сообщений: 6

нет, это совсем не то
мне не alert нужен, а return
Ответить с цитированием
  #4 (permalink)  
Старый 25.05.2014, 18:10
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,435

А с чего бы функция parser должна что-то возвратить? Это функция print возвращает некое значение при ее вызове в цикле в функции parser... и все. Больше никуда это значение не девается.
Ответить с цитированием
  #5 (permalink)  
Старый 25.05.2014, 18:14
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,435

То есть, в твоем случае надо как-то так:
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());

Последний раз редактировалось Erolast, 25.05.2014 в 18:18.
Ответить с цитированием
  #6 (permalink)  
Старый 25.05.2014, 18:46
Новичок на форуме
Отправить личное сообщение для brokenwind Посмотреть профиль Найти все сообщения от brokenwind
 
Регистрация: 14.04.2014
Сообщений: 6

нет, это совсем не то, что нужно )
но на мысль вы меня натолкнули, спасибо! )
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Свойства посредством полиморфных функций tenshi Ваши сайты и скрипты 0 18.03.2010 17:12
Проблема с if...else parzh-junior Элементы интерфейса 18 04.12.2009 17:17
Подскажите, как работает простой код (замыкание функции)? Dotod Общие вопросы Javascript 5 02.12.2009 04:03
Модуль для работы с геометрией окна JSprog Библиотеки/Тулкиты/Фреймворки 25 31.08.2009 12:54
Opera/IE баг с очередью обработки события несколькими элементами (напр onmouseover) no. Events/DOM/Window 8 08.03.2009 04:55