•  
  • 0
  •  
0

Как сказать, что javascript функция уже объявлена?

Хотелось бы иметь что-то в таком виде:

function something_cool(text, callback){
    alert(text);
    if( callback != null ){ callback(); };
}

Но я получаю ошибку 'callback is not a function' когда callback не определена.

javascript, функции.
спросил 680 дней назад Аватор пользователя community community
100 2
изменил 423 дня назад Аватор пользователя tc tc
718 15
300

2 ответа:

    •  
    • 1
    •  

    Как-то так. Если something_cool запускается без ошибки — проверяем callback на наличие ошибок, если все ОК — запускаем ее, иначе — говорим о наличии в ней ошибки. Иначе — callback не определена.

    function something_cool(text, callback){
    
        if(typeof(callback) == "function"){
            try {
                callback();
            } 
            catch (error) {
                alert("the error is in the funciton");
            }
        }
    
        if(callback == false){
            alert("the function underfined");
        }
    }
    
    try{
        something_cool("text", runIfDefined)
    }
    catch(err){
        something_cool("text", false);
    }
    
    ответил 680 дней назад Аватор пользователя podgorniy podgorniy
    60 1
    •  
    • 0
    •  

    А почему не проверяете на соответсвие undefined?

    Или даже еще проще:

     if(!callback || (typeof(callback) != "function")){
      alert('No function defined')
    else {
      callback()
    }
    

    И кстати же, callback лучше вызывать через .call() / .apply(), чтобы иметь возможность задать, что будет иметься в виду под this внутри callback.

    ответил 518 дней назад Аватор пользователя rimmer333 rimmer333
    30
Чтобы написать ответ, вы должны авторизироваться.