【问题标题】:What does the "return" do in "return MyFunction()"“return MyFunction()”中的“return”做了什么
【发布时间】:2014-01-31 12:43:13
【问题描述】:

在 Moz Dev Network 上,它给出了一个使用 onchanged 的​​示例,如下所示:

<textbox id="find-text" onchange="return myFunction(event);"/>

不使用“return”的上面和下面有什么区别?

<textbox id="find-text" onchange="myFunction(event);"/>

这是一个完整的例子:

<input onchange="return checkChanged()" type="checkbox" />
<script>
    function checkChanged() {
        alert("checkChanged");
        return false;
    }
</script>

无论我是否使用“返回”,点击后值总是会发生变化。我认为既然它返回false,那么它不会让用户选中该框。

编辑:本例中的实际答案是“无”。但是,这是因为 onchange 是不可取消的。其他事件,例如onclick 是可取消的,返回false 会阻止默认动作,例如阻止点击生效(即检查不会改变)。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    这将返回您的myFunction() 调用结果。在您的情况下,如果这将返回布尔值,这将改变或不改变 &lt;textarea&gt; 内容。

    阅读更多关于 Function 的 MDN 和 onchange 元素属性。

    【讨论】:

    • 谢谢,我不确定自己为什么有时会从事件处理程序返回值。 :)
    • 当我尝试这个例子时,它确实改变了状态,即使我返回 false。
    • 我说的是为什么这在 Event 中有效。所以在复选框的情况下你应该使用onclick 然后它不会被点击。以textarea onkeypress 为例。见 jsFiddle jsfiddle.net/w56S2
    • 好的,是的,我现在明白了。感谢 jsFiddle。
    【解决方案2】:

    当你从一个函数返回一些东西时,那个值会返回到 呼叫者。例如,假设我有一种方法可以将两个数字相乘。也许 代码如下:

    function multiply(num1, num2) {
    return num1 * num2;
    }
    result = multiply(2, 4);
    

    函数 multiply 将其乘法的结果返回给 无论它被称为什么地方。结果赋值的右边是 函数被调用的地方,所以这就是结果返回的地方。 因此,在这种情况下(使用参数 2 和 4),它与编写相同 结果 = 8;

    当您使用带有标记的 return true 或 false 时,您表示 您是否希望在 javascript 之后发生默认操作 已被执行。

    【讨论】:

      【解决方案3】:

      来自Reference Link

      设置或获取一个布尔值,表示当前事件是否被取消。当一个事件被取消时,属于该事件的默认动作将不会被执行。例如,当一个复选框的onclick事件(onclick事件是可取消的)被取消时,那么点击该复选框并不会改变它的选中状态。

      使用返回值是为了防止默认事件处理程序根据布尔返回值执行。不是每个事件都可以取消。 当您希望在某些情况下阻止默认事件执行时,您可以使用 return。
      For example:如果您返回 false,它将阻止表单提交,如果您返回 true,则表单提交按钮的 onclick 事件它将继续提交。

      【讨论】:

      • 谢谢,这是有道理的。
      猜你喜欢
      • 2023-01-27
      • 2022-01-19
      • 2014-12-22
      • 1970-01-01
      • 2012-02-07
      • 2016-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多