Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Функция из имени переменной (https://javascript.ru/forum/events/46661-funkciya-iz-imeni-peremennojj.html)

1lider 18.04.2014 17:50

Функция из имени переменной
 
Добрый вечер.

Почему не работает следующий вариант:

var rand = Math.floor(Math.random( ) * (9999999+1));
	var func = window[rand](){
		alert("hello world!");
	};

Выходит следующая ошибка - Предполагается наличие ';', во второй строке кода.
Я хотел сгенерировать случайное число. Затем сделать переменную именем функции и сразу же запустить на выполнение. Каков будет правильный вариант? Спасибо

nice_try 18.04.2014 17:57

так не катит?


+(function() {     alert(Math.floor(Math.random( ) * (9999999+1))); })()

1lider 18.04.2014 18:04

Цитата:

Вы просите готовый скрипт с нуля. Это работа, и за нее обычно платят деньги. Для таких сообщений предназначен раздел форума "Работа". Если вы все же хотите, чтобы вам помогли - приложите какие-то усилия сами и задавайте вопросы по ходу дела.
nice_try. Будь я администратором этого форума, я бы не говорил такие вещи своим пользователям. Ибо чем больше пользователей посещает форум(сайт), тем больше стоит реклама на сайте, и сам сайт. Это выгодно прежде всего администратору. В случае, если форум(сайт), не зарабатывает деньги на рекламе или любым другим способом, значит возможно он создан в учебно-познавательных(мануал) целях.

Я выложил кусок своего кода JS, чтобы добрые люди ткнули пальцем на ошибку. Если этого не происходит, тогда зачем вообще нужен ваш форум. Удалите его и всех дел. А мы(пользователи), найдём другой форум, где нам не будут говорить подобные вещи.

1lider 18.04.2014 18:06

Нет. Ваш вариант не подоходит. Условие было другое. Сгенерировать переменную. Далее, превратить имя переменной в функцию и вызвать её.

Erolast 18.04.2014 21:49

Цитата:

nice_try. Будь я администратором этого форума, я бы не говорил такие вещи своим пользователям. Ибо чем больше пользователей посещает форум(сайт), тем больше стоит реклама на сайте, и сам сайт. Это выгодно прежде всего администратору. В случае, если форум(сайт), не зарабатывает деньги на рекламе или любым другим способом, значит возможно он создан в учебно-познавательных(мануал) целях.

Я выложил кусок своего кода JS, чтобы добрые люди ткнули пальцем на ошибку. Если этого не происходит, тогда зачем вообще нужен ваш форум. Удалите его и всех дел. А мы(пользователи), найдём другой форум, где нам не будут говорить подобные вещи.
1. nice_try не администратор.
2. Это его подпись :)

Касательно задачи - превратить имя переменной в функцию? Что??? Формулируй задачу корректно, это уже шаг к ее решению. Тебе надо создать функцию с динамическим именем? Ну так и создавай.
window[rand] = function() {alert("Hello, world!")}; //Создание
window[rand](); //Вызов

Но зачем тебе вдруг такое вообще понадобилось? Одноразовая функция? Используй такую конструкцию:
(function(){alert("Hello, world!")})() //Создание анонимной функции и сразу же ее вызов

1lider 18.04.2014 22:15

Erolast. Вариант работает. БлагоДарю.:thanks:


Часовой пояс GMT +3, время: 00:56.