如何调整JavaScript的mainFunc,使其可直接接收参数并返回结果?
解决方法
要实现mainFunc('example text')的调用方式,同时保留原有的子函数调用逻辑,你可以让mainFunc返回一个兼具函数功能与属性方法的对象(JavaScript中函数本身就是对象,可直接挂载属性)。具体调整如下:
function mainFunc(mainParameter) { // 定义核心返回函数,实现直接传参时的逻辑 const resultFunc = function(subParameter) { return subParameter; }; // 给返回的函数挂载原有的子方法 resultFunc.subFunc1 = function(sub1Parameter) { return sub1Parameter; }; resultFunc.subFunc2 = function(sub2Parameter) { return sub2Parameter; }; // 如果调用mainFunc时直接传参,就调用返回的函数并返回结果 if (mainParameter !== undefined) { return resultFunc(mainParameter); } // 没有传参时,返回挂载了子方法的函数对象 return resultFunc; } // 两种调用方式都能正常运行 console.log(mainFunc().subFunc1('example text')); // 输出: example text console.log(mainFunc('example text')); // 输出: example text
逻辑说明
resultFunc是核心函数,功能和原subFunc1一致,负责返回传入的参数。- 给
resultFunc添加subFunc1和subFunc2属性,属性值为原来的子函数,确保原调用方式mainFunc().subFunc1(...)依然有效。 - 判断
mainFunc是否收到参数:有参数时直接调用resultFunc返回结果;无参数时返回resultFunc对象,允许调用它的子方法。
如果你不需要保留原调用方式,仅需实现mainFunc('example text')的功能,也可以简化为直接返回参数,但上述方案兼顾了两种调用场景。
内容的提问来源于stack exchange,提问作者BBB
相关产品推荐
相关产品推荐

