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

将变量设置为等于没有括号的函数?

梁巴英
2023-03-14
问题内容

我正在关注有关AJAX的教程,而制作视频的人做了些奇怪的事情。至少我以前没看过。他们将对象属性设置为等于函数名称,但没有熟悉的()。后来他继续定义功能。下面提供了用于上下文的代码。无论如何,设置不带参数的等于函数的功能是什么意思?该行代码实际上正在运行名为该功能的函数,如下所示。

xmlHTTP.onreadystatechange = handleServerResponse;

有一个名为“ handleServerResponse()”的函数,该行实际运行。我可以发布它,但是我认为这无关紧要。这只是正常功能function handleServerResponse()。任何解释将不胜感激!谢谢!〜Carpetfizz

编辑:添加()到该行的末尾,创建错误,以及对其进行更改。


问题答案:

他们在那里所做的是在不 调用 函数的情况下 引用 该函数。 __

var x = foo;   // Assign the function foo to x
var y = foo(); // Call foo and assign its *return value* to y

在JavaScript中,函数是对象。正确的对象。这样您就可以传递对它们的引用。

在这种特定情况下,他们正在做的是设置handleServerResponse为就绪状态更改时XHR对象使用的回调。XHR对象将在执行ajax请求的过程中调用该函数。

其他示例:

// Declare a function
function foo() {
    console.log("Hi there");
}

// Call it
foo();        // Shows "Hi there" in the console

// Assign that function to a varible
var x = foo;

// Call it again
x();          // Shows "Hi there" in the console

// Declare another function
function bar(arg) {
    arg();
}

// Pass `foo` into `bar` as an argument
bar(foo);     // Shows "Hi there" in the console, because `bar`
              // calls `arg`, which is `foo`

它自然地遵循从一个事实,即函数对象,但它的价值呼唤特别是有之间没有神奇的联系x,并foo在上面;
它们都是指向相同功能的变量。除了它们指向同一功能外,它们没有任何链接,并且更改一个功能(例如指向另一个功能)对另一个功能没有影响。例:

var f = function() {
    console.log("a");
};

f(); // "a"

var x = f;

x(); // "a"

f = function() {
    console.log("b");
};

f(); // "b"
x(); // "a" (changing `f` had no effect on `x`)


 类似资料:
  • 问题内容: 我正在使用Spring Boot开发应用程序。在REST控制器中,我更喜欢使用路径变量(注释)。我的代码获取了path变量,但它在网址中包含 {} 括号。请任何人建议我解决这个问题 网址 输出控制器 {约翰} 问题答案: 使用提交请求来代替。 您为路径变量赋予Spring值“ {john}” ,因此Spring通过“ {}”获得它 Web MVC框架 指出 URI模板模式 URI模板可

  • 我将一个字符串设置为activeElement.value,一切正常。现在,我想为activeElement.value设置一个变量,我得到了以下错误代码: 线程“main”中的异常 org.openqa.selenium.WebDriver异常:未定义患者 ID 命令持续时间或超时:66 毫秒 构建信息:版本:“2.45.0”,修订版:“5017cb8”,时间:“2015-02-26 23:59

  • 我的类中有一个静态变量,我在cpp文件中将其实例化为值1000。 cpp文件的代码。 当我打印容器对象的ID值时,它们不断递增。 我的问题是,当我创建一个新对象时,我将静态变量实例化为值0f1000,那么为什么它会随着创建的每个对象不断递增呢?

  • 假设我想要一个变量包含从1到100的数字。我可以这样做: 但是把所有这些数字写下来需要很多时间。有没有办法给这个变量设置一个范围?类似的东西: 这听起来可能是一个非常愚蠢的问题,但我自己还没有弄清楚。提前感谢。

  • 问题内容: 有人可以告诉我是否应该在Shell脚本中的变量周围加上引号吗? 例如,以下是正确的: 要么 如果是这样,为什么? 问题答案: 一般规则:如果它可以为空或包含空格(或任何空白)或特殊字符(通配符),则将其引号。不使用空格引用字符串通常会导致外壳将单个参数分解为多个参数。 因为它是数字值,所以不需要引号。是否需要它取决于您在其中允许的内容以及是否为空(如果为空)。 我倾向于总是出于习惯而引

  • 你好,我有以下php代码: 现在,我的变量结果返回为: abc@domain.com,def@domain.com 但我需要这份申报表: 'abc@domain.com','def@domain.com'。 所以每封邮件都附在一个报价单上,问题是我找不到如何在我的代码中实现这一点, 任何想法,提前感谢