Return not in function

Return not in function

筱武穆 发布于 2021-11-24 字数 1372 浏览 755 回复 5 原文

Firebug is reporting a "return not in function" error with no location (well, line 1 of nothing). How can I track down the source of this error?

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

I'm running FireBug 1.05 on FF 2.0.0.20 on Ubuntu.

I found a solution that works (for this configuration):

  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; };
 }

The code was in a loop in which the id was changing, necessitating the capture function.

Formerly the href was 'javascript: return 0' and the capture function wasn't returning false directly, instead using the result of the fn, and there was a path when it was returning the equivalent of true. The href was being evaluated causing the error.

Defining href as '#' or '' caused all the links to appear as already visited. Not defining href at all caused there to be no link highlighting. This seemed simplest.

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

谎言月老 2022-06-07 5 楼

Daniel Lew has the answer for dougfelt, but others who get this error should also look out for any return statement that doesn't reside in a function. For instance:

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

return false; is outside of any function, and will cause this error.

帅的被狗咬 2022-06-07 4 楼

I got this when typing into the console window in firebug.
I'd written a for loop to search for something in a list
dont try and return a value in there - just assign it to a variable and you can see the object/value in the console.

胡大本事 2022-06-07 3 楼

I'm going to hazard a guess that this means you have an extra closing brace, or a missing opening brace.

Is your codebase prohibitively large to do a spot check around each of your return functions? Do you have an IDE that highlights matching braces for you?

极度宠爱 2022-06-07 2 楼

Javascript returns an error because the return statement is not inside a function. A possible cause for this is incorrect function definition, such as:

myFunc() { some code; return; }

where the correct code definition is:

function myFunc() { some code; return; }
一袭水袖舞倾城 2022-06-07 1 楼

I think the "javascript:return ..." is telling. I believe you're trying to return a value in the href attribute of an anchor, as below:

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

The reason Firebug isn't telling you the location is because it's not in any JavaScript, but is rather in a one-liner in the DOM.