【问题标题】:When to use parentheses with javascript function [duplicate]何时在 javascript 函数中使用括号 [重复]
【发布时间】:2013-04-02 22:18:42
【问题描述】:

我有一个名为showText() 的函数,它将一些文本从表单文本框中复制到其他地方的段落中。它的调用方式如下:

document.getElementById("mybutton").onclick = showText; 

如果我将 () 添加到 showText 的末尾将不起作用,我通过阅读类似的答案了解到这是调用函数的唯一方法。

在脚本的后面,它需要 () 才能工作:

window.addEventListener("keypress", function(e) {
    var keycode = e.keyCode;
    if (keycode == 13) {
        showText();
    }
}, false);

我不确定这里发生了什么。

【问题讨论】:

  • 函数是对象。您的两个示例说明了函数的分配与调用函数。

标签: javascript


【解决方案1】:

showText 返回函数 showText

showText() 运行函数showText 并返回结果

当您将函数附加到 .onclick 之类的事件处理程序时,它需要 function

您可以调用函数并将结果返回给这样的事件:document.getElementById("mybutton").onclick = showText(); 提供函数本身返回一个函数:

function showText() {
    return function () { 
        alert('hello world'); 
    }
}

【讨论】:

    【解决方案2】:

    在 Javascript 中,函数是一等公民,这意味着它们可以分配给一个变量......这就是你在第一个做的事情......你基本上是将 onclick 设置为你选择的函数(告诉浏览器,当它被点击时......调用这个函数)

    通过使用 () 你正在调用函数..

    我也可以这样做

    function test() {
      alert('Alert something');
    }
    
    var a = test;
    a();
    

    【讨论】:

      【解决方案3】:

      当你有这样的陈述时:

      onclick = showText;
      

      计算右侧表达式并将结果分配给左侧。如果标识符showText 解析为函数对象,则分配对该对象的引用。

      如果showText 后跟括在括号中的形式参数列表,即showText(),则使用提供的参数调用函数并分配结果。形参列表可以为空。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-11
        • 1970-01-01
        • 2020-03-06
        • 2016-10-09
        相关资源
        最近更新 更多