JavaScript私有方法引用立即调用函数内

JavaScript私有方法引用立即调用函数内

问题描述:

此JavaScript代码需要在一个句子中提取第一个单词,并调用一个名为第一个单词的函数,但如果该单词没有功能,则不执行任何操作。但它不是编译。任何想法为什么以及如何解决它?
即如何将参数传递给函数?JavaScript私有方法引用立即调用函数内

refactor = (function() { 

    const john = function (description) { 
    console.log(description); 
    }; 

    const factoring = { 
    'john': john(description) // <--- description is not defined --- 

    }; 

    return Object.freeze({ 
    'byName': function (description) { // calls the correct private method if present 
     let name = description.match(/(\S+)\s/)[1]; 
     if (name in factoring) factoring[name](description); 
    } 
    }); 
}()); 
+0

错误说明了一切。 'desc'没有在任何地方定义。 – Li357

+0

'desc'甚至会是什么? –

+0

然后,我怎样才能将参数传递给函数? –

desc未定义。要么定义desc并给它一个值(const desc = "Some random string")或用desc替换一些值('john': john("Some random string"))。

+0

但是这个值不可用,它只能在运行时间。 –

+1

@FredJ。因为它是可用的,它应该首先声明。 – zerkms

+0

@FredJ。 zerkms是对的。对不起,我习惯于常规JS而不是ECMAScript –