gpt4 book ai didi

JavaScript:对象被作为函数调用,尽管它没有被定义为函数——它是如何工作的?

转载 作者:行者123 更新时间:2023-11-30 12:55:57 25 4
gpt4 key购买 nike

所以我遇到了这个简单的 JavaScript 代码,令我惊讶的是 objectA 被作为函数调用,尽管它没有被定义为函数。为什么 objectA 在作为函数调用时会起作用?

function greaterThan(x) {
return function(y) {
return y > x;
};
}

var objectA = greaterThan(10);
console.log(objectA(9));

这是 JSFiddle .

最佳答案

您应该知道,在 JavaScript 编程语言中,函数是一等公民。这意味着函数可以存储在变量、数组或对象中。此外,函数可以传递给函数并从函数返回。最后一个行为就是这里发生的事情。当你调用 greaterThan() 函数时,你得到了一个函数。 JavaScript 代码中的正常行为。

看看如果运行这段代码会发生什么:

alert(objectA instanceof Function);

为了更好地理解,请看下一段代码:

function greaterThan(x) {

var result = function(y) {
return y > x;
};

return result;

}

调用 greaterThan 函数时得到的只是另一个函数。

这段代码中的另一个有趣的事情与这个新函数如何维护保存的 x 值有关。这个概念称为闭包,您将在此处看到更多信息 How do JavaScript closures work? .

关于JavaScript:对象被作为函数调用,尽管它没有被定义为函数——它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19122027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com