在以下代码中
const express = require('express');
const app = express()
app.use(express.static('public'));
express是一个函数,因此如何在其上调用“ express.static('public')”方法? JavaScript是否可以调用函数内部的函数
答案 0 :(得分:19)
函数不仅是first class function,而且是first class object,并且可以包含属性。
function foo() {}
foo.bar = function () { console.log('i am bar'); };
foo.bar();
答案 1 :(得分:2)
您可以将一个函数作为成员数据附加到另一个函数(在示例中已完成)。
const express = () => {};
express.static = argument => console.log('argument');
express.static('public'); # console >>> 'public'
但是,您不能轻易访问在函数主体中定义的变量。
const express = () => {
const static = argument => console.log('argument');
};
express.static('public'); # console >>> Error: undefined in not a function
附加到函数的成员数据(第一个示例)与包装函数主体的闭包(第二个示例)之间存在显着差异。
因此,要回答您的问题“ JavaScript是否可以调用函数内部的函数?”不,要注意,这不是不是在您的示例中正在做的事情,所以这不可能。
答案 2 :(得分:-1)
实际上,可以在javaScript中的另一个函数内调用一个函数。 因此,取决于条件,回调在js中被广泛使用
(回调是要在另一个函数之后执行的函数 函数执行完毕)
function doHomework(subject, callback) {
alert(`Starting my ${subject} homework.`);
callback();
}
function alertFinished(){
alert('Finished my homework');
}
doHomework('math', alertFinished);
第二个示例可以是关闭
(闭包是JavaScript中的一个功能,其中内部函数具有 访问外部(封闭的)函数的变量)
function outer() {
var b = 10;
function inner() {
var a = 20;
console.log(a+b);
}
return inner;
}