首页 > 解决方案 > JS:为什么不返回带有`function`字的内部函数?

问题描述

如果我正在制作一个工厂函数foo,为什么我不返回内部函数function noiseMade()而不仅仅是返回noiseMade()

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

        noiseMade() {

            return "I make" + sound
        }

    }
}

标签: javascriptclosures

解决方案


从评论中总结我们的对话。对象中的函数支持的语法:

{
  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东西 :)


推荐阅读