6

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

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

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

稍后在脚本中它需要 () 才能工作:

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

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

4

3 回答 3

15

showText返回函数 showText

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

当您将函数附加到像 .onclick 这样的事件处理程序时,它需要一个function.

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

function showText() {
    return function () { 
        alert('hello world'); 
    }
}
于 2013-04-02T22:20:06.213 回答
0

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

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

我也可以做这样的事情

function test() {
  alert('Alert something');
}

var a = test;
a();
于 2013-04-02T22:22:22.787 回答
0

当您有如下声明时:

onclick = showText;

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

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

于 2013-04-02T23:56:00.247 回答