【问题标题】:I get this error! [ 'return' statement outside of function ]我得到这个错误! [函数外的'return'语句]
【发布时间】:2020-10-09 00:07:44
【问题描述】:

我正在为客户创建一个表单验证器,only 在 Internet Explorer (Explorer) 7/8 中遇到了这个奇怪的错误......

'return' 函数外,第 1 行,字符 1

当然,第 1 行没有任何代码。这是一个简单的注释语句。无论如何,它没有任何问题。所以我知道这只是一个调试错误。

我一直在努力了解这里可能出了什么问题......

我已经排除了显而易见的情况:循环中的 return 语句,单个函数中的 return 语句过多,以及任何实际超出合法函数定义的返回。

这是什么原因?

【问题讨论】:

  • 这通常意味着它所说的 - 你在任何函数之外都有一个 return 语句。示例代码会有所帮助...
  • 也许一些源代码可以帮助我们帮助你?
  • 一个代码示例会有所帮助。错误消息不足以识别代码中的错误。

标签: javascript internet-explorer-7


【解决方案1】:

问题是我使用了一个 return 语句来覆盖我的表单的默认行为,并且它被分配给一个属性,但是它没有放在匿名函数中!

我有一个这样设置的表单元素:

<form name="formname" onSubmit="javascript:validateForm(this);" action="javascript:return false;" method="post" enctype="multipart/form-data">

我需要更改的只是 action 属性:

… action="javascript:function(){return false};"

现在可以完美运行了!

【讨论】:

  • javascript: URL 是邪恶的;永远不要使用它们,尤其是action。如果为非 JS 用户指向表单确实没有用处,您可以给它一个无用的操作,如 #,并使用 onsubmit="return false" 停止它提交(事件处理程序不需要 javascript: 前缀,这不是 URL;包括它没有任何意义)。或者,如果您不需要将纯脚本表单字段与提交它们的任何地方关联,您可以省略表单标签。
  • 抱歉,但在某些浏览器中,哈希“#”会产生额外的 HTTP 请求,应该避免这种情况。特别是因为谷歌对页面加载速度感到恐慌。这个信息是为了让人们知道在函数之外使用 return ANYWHERE 会导致 IE 抛出错误。任何时候使用“return”,无论它在哪个属性中,都需要将它包含在一个函数中:匿名或其他。通过返回 false 可以防止浏览器执行其默认行为。它适用于所有浏览器。包含“javascript:”部分只是一种很好的做法:它确保正确的代码类型。
  • @bobince 是对的,不要使用javascript:。请改用onsubmit="return validateForm(this);"。 validateForm 只需返回 false 即可停止提交表单。 onsubmit 已经需要 javascript,所以不需要 javascript:。那么为什么不让行动空着呢?不需要#。
  • exoboy 的回答有点误导。 action="javascript:function(){return false};" 阻止提交表单的原因不是因为 return false 位。您可以使用javascript:function(){return true}; 或javascript:function(){return 'pants'}; 或javascript:var foobar; 或javascript:void(0); 实现相同的阻塞效果。只是想指出这段代码有点误导。它阻止表单提交是因为 javascript: 代码什么也不做也不返回任何内容,而不是因为它声明了一个如果运行就会返回 false 的函数。它不是(运行))。
  • 代码没有误导性。它适用于任何可能不允许空函数的浏览器,无论是现在还是将来。它被设计成健壮的,而不是尽可能小的代码......
【解决方案2】:

有时,当您编写后端系统时,用户需要启用 JavaScript 才能使用系统,我觉得使用 javascript: href 标签很好,因为无论如何使用系统都需要 JavaScript。

在这种情况下,使用href="javascript:"没有任何问题,是吗?

【讨论】:

    【解决方案3】:

    检查以确保您没有在您的函数参数中写入“var”。

    在许多语言中,您必须指定参数参数的类型。在 JavaScript 中你不必这样做。

    【讨论】:

    • 也许您应该详细说明省略 var 对 OP 的 return 有何帮助。
    【解决方案4】:

    我在使用 ModalPopupExtender 时遇到此错误。我指定了以下属性:

    OnOkScript="return false;"
    

    设置OkOkScript="" 为我解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-07
      • 2019-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多