Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.08.2009, 19:00
Новичок на форуме
Отправить личное сообщение для alex0071 Посмотреть профиль Найти все сообщения от alex0071
 
Регистрация: 18.08.2009
Сообщений: 9

Помогите разобратса
Я только начал изучать этот язык.
Вот возникла проблемка
<script>
function makefunc(x) {
return x; 
}

var a = [makefunc(0), makefunc(1), makefunc(2)];

alert(a[0]( )); 
alert(a[1]( ));
alert(a[2]( )); 
</script>

Почему такая штука не работает?
Ответить с цитированием
  #2 (permalink)  
Старый 23.08.2009, 19:05
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

У вас массив заполнен результатами выполнения функции
Ответить с цитированием
  #3 (permalink)  
Старый 23.08.2009, 19:06
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

alex0071, а что, по Вашему, должен делать этот код? Если элементами массива "а" должны являться функции (что видно из a[0]( )), то почему функция "makefunc", наполняя массив "а", возвращает не функцию, а число?
__________________
Тонкости ECMAScript
Ответить с цитированием
  #4 (permalink)  
Старый 23.08.2009, 19:07
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

function makefunc(x) {
return function() {return x}; 
}
Ответить с цитированием
  #5 (permalink)  
Старый 23.08.2009, 19:13
Новичок на форуме
Отправить личное сообщение для alex0071 Посмотреть профиль Найти все сообщения от alex0071
 
Регистрация: 18.08.2009
Сообщений: 9

Сообщение от Octane
У вас массив заполнен результатами выполнения функции
Так вроде так и должно быть а потом результаты эти выводить
Сообщение от Dmitry A. Soshnikov
возвращает не функцию, а число?
Ну возвращает число и выводит его(такая идея)
Сообщение от Riim
function makefunc(x) {
return function() {return x};
}
Хмм замыкания. Не прошу расказать как они работают, прошу обьяснить почему без них не работает =)
Ответить с цитированием
  #6 (permalink)  
Старый 23.08.2009, 19:22
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от alex0071
Хмм замыкания. Не прошу расказать как они работают, прошу обьяснить почему без них не работает
Потому что в массиве число, и вы его запускаете как функцию.
Ответить с цитированием
  #7 (permalink)  
Старый 23.08.2009, 19:37
Новичок на форуме
Отправить личное сообщение для alex0071 Посмотреть профиль Найти все сообщения от alex0071
 
Регистрация: 18.08.2009
Сообщений: 9

Спасибки понял
так как у меня репа 0
Ставлю вам так всем жирные +++++
Ответить с цитированием
  #8 (permalink)  
Старый 23.08.2009, 19:49
Новичок на форуме
Отправить личное сообщение для alex0071 Посмотреть профиль Найти все сообщения от alex0071
 
Регистрация: 18.08.2009
Сообщений: 9

Нашёл решение
<script>
function makefunc(x) {
return x;
}

var a = [makefunc(0), makefunc(1), makefunc(2)];

alert(a[0]); // Выведет 0
alert(a[1]); // Выведет 1
alert(a[2]); // Выведет 2
</script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с javascript andruhin Общие вопросы Javascript 12 04.05.2012 10:05
помогите задать селектор! mkrylov jQuery 2 28.06.2009 20:34
Пожалуйста, помогите создать Web-страницу, содержащую заданную форму Mikhail Элементы интерфейса 2 13.05.2009 22:57
Помогите со скриптом Pilageen Общие вопросы Javascript 5 13.04.2009 14:13
Помогите! Почему в Opera js-код работает с ошибкой. В IE все нормально. maxonline Events/DOM/Window 4 21.11.2008 12:39