функция возврата на JavaScript

0

Я читаю книгу о javascript, и я столкнулся с этим синтаксисом

это функция

function unwantedTextEvent(){
  return (navigator.vendor == 'Apple Computer, Inc.' && (event.target == event.relatedTarget.parentNode
  || (event.eventPhase == 3 && event.target.parentNode == event.relatedTarget)));
};

а затем внутри другой функции, автор делает именно это

attachEventListener(li, 'mouseover', function(e){
 if (unwantedTextEvent()) { return; }
 clearTimeout(closetime);
 if (branch == li) { branch = null; }
 //and so on

Теперь мне стыдно признаться, что я еще никогда не видел этот синтаксис:

 if (unwantedTextEvent()) { return; }

и я не знаю, что он делает. Может ли кто-нибудь объяснить мне? Что делает этот синтаксис вообще?

заранее спасибо

  • 1
    Он просто вызывает функцию и использует возвращаемое значение в условии if.
  • 0
    Не могли бы вы уточнить, какая часть этого кода сбивает вас с толку? В общем, способ понять любой код состоит в том, чтобы разбить его на составные части. Если вы понимаете, что делает каждая часть, общий смысл должен стать ясным.
Показать ещё 2 комментария
Теги:
function

5 ответов

1
Лучший ответ

Этот синтаксис вызывает функцию, называемую unwantedTextEvent(). Если эта функция возвращает положительное логическое значение, возвращается функция обратного вызова function(e) внутри attachEventListener.

Он просто прекращает выполнение функции обратного вызова.

  • 0
    Таким образом, если unwantedTextEvent() возвращает true, function(e) продолжает выполняться, а если unwantedTextEvent() возвращает false, function(e) останавливается? И код продолжается после function(e) ?
  • 0
    @ user2860857 у вас это перевернуло. Если условие true (т.е. когда unwantedTextEvent() true ), function(e) возвращается. Если он не удовлетворяет условию, он продолжает проверять оставшуюся часть функции до тех пор, пока она не завершится или не вернется из-за другого условия, встречающегося позже.
Показать ещё 3 комментария
1

В принципе, unwantedTextEvent() - просто большое условие. Если это условие истинно, оно прекратит выполнение функции

Код после возврата никогда не запускается.

Это то же самое, что и делать:

if (!unwantedTextEvent()) {
    clearTimeout(closetime);
    if (branch == li) { branch = null; }
    //and so on
}
  • 0
    Итак, если я правильно понял: если unwantedTextEvent() возвращает true, function(e) не выполняется, а если возвращает false, function(e) выполняется? Как я могу отредактировать код, чтобы сделать как, if returns false ? Например, if (unwantedTextEvent()) { !return; }
  • 0
    @ user2860857 ты понял. Если вы хотите наоборот, вам придется отрицать if: if (!unwantedTextEvent()) { return; } Видишь группу внутри если?
Показать ещё 2 комментария
0

Это обычное, if выражение. Общий вид if:

if (<test expression>) {
    <code to execute>
}

необязательно, за которым следует предложение else (но ваш пример этого не имеет).

В этом случае <test expression> является вызовом функции unwantedTextEvent. Если он возвращает истинное значение, выполняется <code to execute>, и функция возвращается. В противном случае он будет продолжен с остальной функцией.

  • 0
    Это не то, что спрашивает ОП.
  • 1
    @ Scimonster - Похоже, именно то, что просит ОП?
Показать ещё 2 комментария
0

Возврат завершает функцию немедленно. Этот синтаксис выходит без возврата значения.

0

return; оператор просто выходит из функции, переданной в attachEvenListener. т.е. анонимная функция.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню