当前位置: 首页 > 面试题库 >

函数调用和函数引用之间有什么区别?

邓深
2023-03-14
问题内容

我有以下功能

function hello() {
 alert("hi!");
}

这段代码:

var elem = document.getElementById("btn");
elem.onclick = hello;

我的问题可能有点难以理解,所以请忍受:是什么使该代码段与常规调用完全区分开,或者是什么使该代码段需要引用函数变量而不是常规调用?(hello();

我怎么知道应该在哪里引用该函数,以及什么时候该真正调用它?


问题答案:

好吧,该onclick属性期望对函数的引用,以便在单击元素时执行该函数。通常是:

element.onclick = funcRef;

要么

element.onclick = function () {
    funcRef();
};

(但是,当然,最好使用addEventListenerattachEvent

请注意,它们都是如何引用函数而不是调用。

当某些东西需要引用时,您不会调用它…而是为其分配引用(第一个示例)。

当您要专门调用一个函数时,可以使用()(第二个示例)进行调用。但是请注意,在第二个示例中,仍然有对分配给该函数的引用onclick-它只是一个匿名函数。

可能更重要的部分是:

有人认为您想这样做:

element.onclick = funcRef();

但这会立即执行该函数(由于()),并将其返回值分配给onclick。除非返回值 一个函数,否则这不是您想要的。

我认为这个故事的寓意是,当您希望/需要立即执行某项操作时,可以调用该函数。如果需要该函数供以后使用或需要存储,则不要调用它。



 类似资料:
  • 问题内容: 我一直在阅读iBooks中的快速编程指南。有人可以向我解释函数和闭包之间的区别是什么。只是它没有名称并且可以在表达式中使用? 问题答案: 函数实际上只是命名为闭包。以下至少在概念上是等效的: 在使用声明方法的情况下,这变得有些复杂,例如,关于自动插入公共命名参数等,添加了一些有趣的糖,例如,变为`func myMethod(foo:Int, #bar:Int, 但是,即使方法只是闭包的

  • 问题内容: OpenAI的强化学习的REINFORCE和actor-critic示例具有以下代码: 加强: 演员评论家: 一种正在使用,另一种正在使用。 据我所知,文档没有对它们之间进行任何明确的区分。 我很高兴知道这些功能之间的区别。 问题答案: 沿着 新的维度 连接张量序列。 在给 定维度上 连接给定序列张量的序列。 因此,如果和具有形状(3,4),则将具有形状(6,4),并将具有形状(2,3

  • 问题内容: 我一直以为功能和方法是相同的,直到我通过“ Swift编程语言”电子书学习Swift 之前。我发现我 不能greet(“John”, “Tuesday”)用来调用在类中声明的函数, Here is the code:- 当我在Objective-C中编程时,我从未意识到这种差异。 Swift中的函数和方法之间有什么区别? 在Swift中什么时候使用函数以及何时使用方法? 问题答案: 经

  • 问题内容: 我对python级别的函数和常规函数(用定义)之间的差异感到好奇。(我知道对程序员有什么区别,以及何时使用每个程序员。) 如我们所见-python 知道 这是一个函数,并且是一个常规函数。这是为什么?它们 与python有 什么区别? 问题答案: 它们是同一类型,因此它们的处理方式相同: Python还知道将其定义为lambda函数,并将其设置为函数名称: 换句话说,它影响了该函数将获

  • 我正在使用静态编程语言反应器(Mono和Flux),我想知道使用(来自kotlin-coroutines-reactive)函数和(来自React)之间的区别。我带来了两个例子来展示我正在努力做的事情。 示例1(具有等待功能): 输出:带有IllegalStateException堆栈跟踪的“错误”。 示例2(具有订阅功能): 输出:只是“错误”。 为什么示例1显示堆栈跟踪而示例2不显示? 谢谢

  • 问题内容: 斯威夫特有: 强引用 参考文献薄弱 无人参考 无主引用与弱引用有何不同? 什么时候可以使用无主引用安全? 无主引用是否像C / C ++中的悬空指针一样具有安全风险? 问题答案: 双方并引用不创建一个被引用的对象上保持(又名它们不会取消分配引用的对象增加,为了保留计数,以防止电弧)。 但是为什么要两个关键词呢?这种区别与类型内置在Swift语言中这一事实有关。长话短说:可选类型提供了内