Есть ли способ завершить функцию с другой функцией в JavaScript? - PullRequest
0 голосов
/ 18 сентября 2011

Я хотел бы иметь функцию, которая проверяет, является ли условие истинным, перед вызовом определенной функции.Моя цель - иметь одну строку кода (вызываемой функции) в другой функции.Эта функция должна выполняться перед выполнением любого другого кода.Вот некоторый псевдокод, чтобы продемонстрировать, что я имею в виду:

function checkFunction(){
//checks if a condition is true if so end function, else continue function
} 
function aFunction(){
checkFunction();
//some code
}

Я знаю, что могу сделать условное утверждение, содержащее возврат, но я бы хотел, чтобы оно было по возможности коротким.Спасибо, ребята, что уделили время.

Ответы [ 5 ]

1 голос
/ 18 сентября 2011

Ничто не разработано специально для того, что вы хотите, и это в любом случае граничит с плохой практикой.Но вы можете получить его довольно кратко, просто написав что-то вроде:

function aFunction()
{
   if (!checkFunction()) return;
   //some code
}
0 голосов
/ 18 сентября 2011

Если то, что вы пытаетесь сделать, это:

function aFunction()
{
    if(checkFunction())
    {
        return;
    }
    //somecode
} 

без использования возврата в aFunction (), вы можете сделать это:

function aFunction()
{
    if(!checkFunction())
    {
        //somecode
    }
}
0 голосов
/ 18 сентября 2011

Трюк, который вы можете сделать, это динамически изменить другую функцию. Так

function make_wrapped(before, after){
    return function(){
        if(before()) return;
        after.apply(this, arguments);
    }
}

//set aFunction to be the new function
aFunction = make_wrapped(checkFunction, aFunction);

редактировать: я неправильно понял вопрос. Возможно, это намного сложнее, чем нужно.

0 голосов
/ 18 сентября 2011

Я бы просто сделал это:

function checkFunction(){
  return (condition);
} 

function aFunction(){
    if(!checkFunction()) return;
    //some code
}
0 голосов
/ 18 сентября 2011

Возможно, вы захотите assert -подобную функцию, но затем наоборот:

function stopIfTrue(x) {
    if(x === true) throw "stop function"; // can be any string
}

и затем:

function aFunction(){
    stopIfTrue(something); // if 'something' is true an error will be thrown; function will exit
    //some code
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...