我正在尝试学习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