我正在学习关于AJAX的教程,制作视频的人做了一些奇怪的事情.至少我以前没见过.他们将对象属性设置为等于函数名,但没有熟悉的().后来他继续定义了这个功能.代码在下面提供了上下文.无论如何,设置一个没有参数的函数是什么意思?这行代码确实正在运行名为的函数,如下所示.
xmlHTTP.onreadystatechange = handleServerResponse;
有一个名为“handleServerResponse()”的函数,该行实际运行.我可以发布它,但我认为这是无关紧要的.它只是一个普通的函数函数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`)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。