在一个函数上调用一个函数有可能吗?

时间:2018-12-22 09:37:10

标签: javascript node.js express

在以下代码中

const express = require('express');
const app = express()
app.use(express.static('public'));

express是一个函数,因此如何在其上调用“ express.static('public')”方法? JavaScript是否可以调用函数内部的函数

3 个答案:

答案 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;
}
相关问题