Возврат не в функции - PullRequest
       9

Возврат не в функции

9 голосов
/ 28 апреля 2009

Firebug сообщает об ошибке «return not in function» без указания местоположения (ну, в строке 1 ничего нет). Как я могу отследить источник этой ошибки?

return not in function
[Break on this error] return(0)
javascript:return... (line 1)

Я использую FireBug 1.05 на FF 2.0.0.20 в Ubuntu.

Я нашел решение , которое работает (для этой конфигурации):

  var link = document.createElement('a');
  link.href='/';
  if (childSummary.more) {
    link.onclick = capture(function(id) { follow(id); }, childSummary.id);
  } else {
    link.onclick = capture(function(id) { show(id); }, childSummary.id);
  }
  link.appendChild(document.createTextNode(name));
  div.appendChild(link);

  [...]

 function capture(fn, val) {
   return function() { fn(val); return false; };
 }

Код был в цикле, в котором менялся идентификатор, что требовало функции захвата.

Раньше href был 'javascript: return 0', и функция захвата не возвращала false напрямую, вместо этого использовался результат fn, и был путь, когда он возвращал эквивалент true. Href был оценен, вызывая ошибку.

Определение href как '#' или '' заставило все ссылки появиться как уже посещенные. Отсутствие определения href привело к тому, что ссылки не выделялись. Это казалось самым простым.

Ответы [ 5 ]

6 голосов
/ 28 апреля 2009

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

<a href="javascript: return false">Test</a>

Причина, по которой Firebug не сообщает вам местоположение, заключается в том, что его нет ни в одном JavaScript, а скорее в однострочнике в DOM.

4 голосов
/ 28 апреля 2009

Javascript возвращает ошибку, потому что оператор return не находится внутри функции. Возможная причина этого - неправильное определение функции, например:

myFunc() { some code; return; }

где правильное определение кода:

function myFunc() { some code; return; }
1 голос
/ 28 апреля 2009

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

Является ли ваша кодовая база слишком большой для выборочной проверки каждой из ваших функций возврата? У вас есть IDE, которая подчеркивает соответствующие скобки для вас?

0 голосов
/ 08 мая 2014

У Даниэля Лью есть ответ для Дугфелта, но другие, которые получают эту ошибку, должны также искать любое возвращаемое утверждение, которое не находится в функции. Например:

<script type="text/javascript">
    alert("I'm JavaScript!");
    return false;
</script>

return false; находится вне какой-либо функции и вызовет эту ошибку.

0 голосов
/ 31 января 2014

Я получил это при наборе в окне консоли в firebug. Я написал цикл for для поиска чего-либо в списке не пытайтесь вернуть значение там - просто назначьте его переменной, и вы увидите объект / значение в консоли.

...