如何在javascript中将变量用作函数?

我正在尝试学习 express.js,然后我遇到了这些语句。

const express = require('express');
const app = express();

那么现在如何将这个变量“express”写成“express()”。是否可以使用任何类型的变量来做到这一点?

回答

函数是 JavaScript 中的一流对象,它们不像其他语言那样特殊。它们只是可调用的对象。由于它们是对象,因此您可以传递它们:

function example() {
    console.log("Hi there");
}

const e = example;
e(); // "Hi there"

您还可以为它们添加其他属性(Express 也可以这样做)。下面是一个例子:

function example() {
    console.log("Hi there");
}

example.prop = 42;

const e = example;
e(); // "Hi there"

console.log(example.prop); // 42
console.log(e.prop);       // 42 -- since `e` and `example` both refer to the same function

是否可以使用任何类型的变量来做到这一点?

JavaScript 变量没有强类型语言中的类型。变量持有的值有类型,但变量没有;一个变量可以保存一个数字,接下来是一个字符串,之后是一个函数......

function example() {
    console.log("Hi there");
}

let e = example;
e(); // "Hi there"

e = 42;
console.log(e); // 42

e = "Hi there";
console.log(e); // "Hi there"

如果您希望变量、参数等具有类型(因此您不能将字符串放入预期包含数字的变量中),请考虑使用 TypeScript、Flow,甚至只是结合了强大的 IDE 支持的 JSDoc。这些在 JavaScript 之上(在不同程度上)分层了一个类型系统。

回到你的问题:你可以用任何变量来做,但不能用任何类型的值。您不能拨打号码:

let e = 42;
e(); // TypeError: e is not a function

您只能调用函数或其他主机提供的可调用对象¹(它们不一定是真正的函数,但现在主机提供不是实际函数的可调用对象的情况并不常见,这是有问题的)。


¹ 具体而言,在规范方面,任何支持[[Call]] 内部操作的对象。


以上是如何在javascript中将变量用作函数?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>