10

Firebug 报告没有位置的“return not in function”错误(嗯,没有任何内容的第 1 行)。如何追踪此错误的来源?

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

我在 Ubuntu 上的 FF 2.0.0.20 上运行 FireBug 1.05。

我找到了一个可行的解决方案(对于这个配置):

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

代码在一个循环中,其中 id 正在更改,因此需要捕获函数。

以前href是'javascript:return 0',捕获函数不是直接返回false,而是使用fn的结果,当它返回true时有一个路径。正在评估 href 导致错误。

将 href 定义为 '#' 或 '' 会导致所有链接都显示为已访问过。根本没有定义 href 导致没有链接突出显示。这似乎是最简单的。

4

5 回答 5

6

我认为“javascript:return ...”很能说明问题。我相信您正在尝试在href锚点的属性中返回一个值,如下所示:

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

Firebug 没有告诉您位置的原因是它不在任何 JavaScript 中,而是在 DOM 中的单行中。

于 2009-04-27T21:27:49.723 回答
4

Javascript 返回错误,因为 return 语句不在函数内部。造成这种情况的一个可能原因是函数定义不正确,例如:

myFunc() { some code; return; }

正确的代码定义是:

function myFunc() { some code; return; }
于 2009-04-27T21:33:17.870 回答
1

我会冒险猜测这意味着您有一个额外的右大括号,或者缺少一个左大括号。

您的代码库是否过于庞大,无法围绕您的每个返回函数进行抽查?您是否有一个 IDE 可以为您突出显示匹配的大括号?

于 2009-04-27T21:26:30.723 回答
0

我在firebug的控制台窗口中输入时得到了这个。我编写了一个 for 循环来搜索列表中的某些内容,不要尝试在其中返回一个值 - 只需将其分配给一个变量,您就可以在控制台中看到对象/值。

于 2014-01-31T09:23:24.593 回答
0

Daniel Lew 为 dougfelt 提供了答案,但其他遇到此错误的人也应该注意任何不在函数中的 return 语句。例如:

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

return false;在任何函数之外,并且会导致此错误。

于 2014-05-07T20:51:40.633 回答