Различить нормальную функцию или замыкание в JavaScript? - PullRequest
0 голосов
/ 24 февраля 2019

Я был озадачен тем, как вызывать функцию, которая может быть бесценной, когда я изучаю JavaScript.Я использую Java раньше.

Когда я пишу промежуточное программное обеспечение, например, для koa2, я пишу:

async function gzip(ctx, next) { }

Если нам нужен параметр:

function gzipWithOption(option){
   return async function gzip(ctx, next) { }
}

или:

module.exports = options => {
  return async function gzip(ctx, next) { }
}

Моя путаница в том, как koa2 или другая система компилятора узнает, должен ли он вызывать:

theDarkFunc(param)

или:

theDarkFunc(option)(param)

Как программист узнаеттот?Только читая документ?

1 Ответ

0 голосов
/ 26 февраля 2019

У меня нет опыта работы с koa2, в частности, с другими платформами серверов узлов, но определить, является ли значение, возвращаемое функцией, другой функцией или обычным значением, вполне выполнимо во время выполнения в JavaScript.

Например, предположим,у вас есть функция с именем f, которая возвращает что-то, но вы не знали заранее.В этом случае мы можем проверить возвращаемое значение и выполнить соответствующее действие.

f = () => { ... }

val = f()

// you don't know the type of val, so let's find out

if (val instanceof Function) {
  // val is a function, so you handle it in one way
} else {
  // val is not a function, so you handle it in another way
}

Вы также можете использовать typeof f(), который вернет 'function', если значение, возвращаемое f(), является функцией (обратите внимание, что typeof возвращает строку, поэтому кавычки вокруг слова 'function')

val = f()

typeof val === 'function'
typeof val !== 'function'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...