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



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

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

那么现在怎么可能写这个变量" expression "作为"表达()"。有可能用任何类型的变量做到这一点吗?

函数在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,甚至是JSDoc结合强大的IDE支持。这些层是JavaScript之上的类型系统(程度不同)。

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

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

您只能调用函数或其他主机提供的可调用对象¹(这些对象不一定是真正的函数,但现在主机提供非实际函数的可调用对象已经很少见了,这是有问题的)。


¹具体来说,在规范中,任何支持[[Call]]内部操作的对象。

不能对任何变量这样做但是有一种叫做箭头函数的东西,例如

const test = () => {}你可以通过

调用这个函数test()

within()它接受输入在{}中你指定它做什么或者返回

require获取你指定的任何东西所以我猜它等于一个函数

对于任何变量,它必须是一个箭头函数。希望我对你有所帮助!

绝对是的,你说的是JavaScript内联函数来看看这个!

例如:

function example() {
return 1;
}
const execute = example();
console.log(execute) // returns 1

最新更新