JS: Почему вы не возвращаете внутреннюю функцию со словом `function` вокруг нее? - PullRequest
0 голосов
/ 22 января 2019

Если я делаю фабричную функцию foo, почему я не возвращаю внутреннюю функцию как function noiseMade(), а не просто noiseMade()?

function foo() {
    let sound = "buzz"
    return {

        noiseMade() {

            return "I make" + sound
        }

    }
}

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Подведем итоги нашего разговора из комментариев.Поддерживаемый синтаксис для функций в объектах:

{
  makeNoise: function() {}
}

// ES6 and above
{
  makeNoise() {},
  makeAnotherNoise: () => {} // behave a bit different, read about arrow functions for more info
}

Если вы хотите вернуть функцию из другой функции, вы можете, например:

const makeNoise = () => {
  const sound = 'bork';
  return () => { console.log(sound) };
} 

Также один дополнительный бесплатный комментарий :) Предпочтительно использоватьverbs для имен функций, потому что функции обычно do stuff:)

0 голосов
/ 22 января 2019

Синтаксис, который вы упомянули:

const obj = {
  propertyName() { ... }
};

- это сокращенное объявление метода , введенное в ES6

Это эквивалентно классическому объявлению:

const obj = {
  propertyName: function fnName() { ... }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...