Вызов функции на функции это возможно? - PullRequest
0 голосов
/ 22 декабря 2018

в следующем коде

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

express - это функция, так как она вызывает метод "express.static ('public')" для нее?возможно ли в JavaScript вызывать функцию, которая находится внутри функции

Ответы [ 3 ]

0 голосов
/ 22 декабря 2018

На самом деле, можно вызвать функцию внутри другой функции в 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;
}
0 голосов
/ 22 декабря 2018

Вы можете присоединить функцию в качестве данных-члена к другой функции (что и делается в вашем примере).

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 вызывать функцию, которая находится внутри функции?"Нет, это не всегда возможно, если учесть, что это , а не , что делается в вашем примере.

0 голосов
/ 22 декабря 2018

Функция является не только функцией первого класса , но также объектом первого класса и может содержать свойства.

function foo() {}

foo.bar = function () { console.log('i am bar'); };

foo.bar();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...