为了账号安全,请及时绑定邮箱和手机立即绑定

如何编写一个函数,以便在未定义参数时省略代码?

如何编写一个函数,以便在未定义参数时省略代码?

动漫人物 2021-05-06 13:12:46
我正在使用Javascript来执行GUI操作来编写自动化测试用例。我正在编写一个函数来处理要测试的软件上的一些基本“初始化”操作,但我希望可以选择不必将每个参数都放入参数中。所以我有一个基本上可以做到这一点的功能:function initializeApp(arg1,arg2,arg3,arg4){    action1(arg1);    action2(arg2);    action3(arg3);    action4(arg4);}但是可以说我不想执行动作4,现在“ action4”块中包含的代码将无法处理没有arg4输入的情况,并且会崩溃。因此,我想解决该问题的惯用方式是创建一堆ifandelse if语句,如果未定义该参数,它们实际上将跳过不同的代码块。这是一个例子:function testIES(configFile, recordFile, overwrite, scriptFile){    if (arg1 == undefined)    {        action2(arg2);        action3(arg3);        action4(arg4);    } else if (arg2 == undefined)    {        action1(arg1);        action3(arg3);        action4(arg4);    } else if (arg3 == undefined)    {        action1(arg1);        action2(arg2);        action4(arg4);    } else if (arg4 == undefined)    {        action1(arg1);        action2(arg2);        action3(arg3);    }}但是,这种方法有一个明显的缺陷,即如果我希望能够排除一个以上的论点,则需要提出“动作”的每种组合。如果其他任何人想要这样做也不是非常用户友好的,因为他们必须知道不要遗漏一个以上的论点。那么,我最好的选择就是简单地提出所有不同组合吗?或者,还有更好的方法?当然,有更好的方法。
查看完整描述

2 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

这允许传递未定义和虚假的:


function initializeApp(arg1,arg2,arg3,arg4)

{

   var len = arguments.length;

    if(len>0)action1(arg1);

    if(len>1)action2(arg2);

    if(len>2)action3(arg3);

    if(len>3)action4(arg4);

}

如果您永远不会传递类似false的值(0,nullfalse等),则可以使用更简单的形式,例如


if(arg1) action1(arg1);


查看完整回答
反对 回复 2021-05-27
?
青春有我

TA贡献1784条经验 获得超8个赞

您可以获取参数和每个参数的函数数组,然后进行迭代并检查是否已设置参数,然后在相同的索引处调用该函数。


function testIES(...args) {

    [action1, action2, action3, action4].forEach((fn, i) {

        if (args[i] === undefined) return;

        fn(args[i]);

    });

}


查看完整回答
反对 回复 2021-05-27
  • 2 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信