Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вызвать функцию по названию из переменной (https://javascript.ru/forum/misc/77461-vyzvat-funkciyu-po-nazvaniyu-iz-peremennojj.html)

ishurgaya 08.05.2019 11:27

Вызвать функцию по названию из переменной
 
Есть функция в которой в зависимости от условия нужно вызвать ту или иную функцию.
function addTag(src, type){
    var functionName = (type === 'js') ? "createScriptTag" : "createStyleTag";
    if( Array.isArray(src) ) {
        for(let i=0;i<src.length;i++) {
            functionName(src[i]);
        }
    }else{
         functionName(src);
    }
}


В переменной functionName содержится название функции.
Но при выполнение получаю ошибку, что functionName не определена.

Не ужели нельзя передать название функции и вызвать ее?
Помогите пожалуйста

Vlasenko Fedor 08.05.2019 12:10

window[functionName]
object[functionName]

ksa 08.05.2019 14:31

Цитата:

Сообщение от ishurgaya
Не ужели нельзя передать название функции и вызвать ее?

Нужно точно знать область видимости функции, которую ты хочешь вызывать по "строковой константе"...
function test(){
	alert('Ok');
}
var name='test';
window[name]();

Из твоего "примера" не понятно где и как вообще та функция определена... :no:

ksa 08.05.2019 14:35

Цитата:

Сообщение от ishurgaya
Не ужели нельзя передать название функции и вызвать ее?

А еще лучше передать ссылку на функцию... Или саму функцию.
Тогда такой проблемы не будет вовсе. ;)

function start(Fnc){
	Fnc();
};
function test(){
	alert('Test');
};
start(test);
start(function(){
	alert('Ok');
});

ishurgaya 10.05.2019 16:29

Спасибо вам!


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