JavaScript-如何在此脚本中构建函数

JavaScript-如何在此脚本中构建函数,javascript,servicenow,Javascript,Servicenow,有人能帮我为第二个“else if”循环中可用的脚本创建一个函数吗。我需要在其他if循环中反复使用相同的脚本。我非常感谢您的帮助。谢谢 var网络='10.31.224.0/21'//此地址(/21)=2047 风险值网络_1='10.31.224.0/22'//此地址(/22)=1023 var网络_2='10.31.224.0/22'//此地址(/23)=511 if(cidrToRange(network.toString())>2048){ //跳过这些范围 }else if(cidr

有人能帮我为第二个“else if”循环中可用的脚本创建一个函数吗。我需要在其他if循环中反复使用相同的脚本。我非常感谢您的帮助。谢谢

var网络='10.31.224.0/21'//此地址(/21)=2047
风险值网络_1='10.31.224.0/22'//此地址(/22)=1023
var网络_2='10.31.224.0/22'//此地址(/23)=511
if(cidrToRange(network.toString())>2048){
//跳过这些范围
}else if(cidrotrange(network.toString())<126){
//下面是代码,如果在这里
}else if(cidrotrange(network.toString())==2047){
var IPstart=network.toString().substring(0,network.lastIndexOf('.'))+“.1”;
var IPend=network.toString().substring(0,network.lastIndexOf('.'))+“.10”;
数值=8;
对于(变量i=0;i<0;i++){
var res_ipstart=ipstart.split(“.”);
res_ipstart[2]=parseInt(res_ipstart[2])+i;
var excludestart=res_ipstart.join(“.”);
var res_ipend=ipend.split(“.”);
res_-ipend[2]=parseInt(res_-ipend[2])+i;
var excludeend=res_ipend.join(“.”);
var excludename=excludestart+“-”+EXCLUDEND;
}
var recadd=新记录(“发现范围项目”);
recadd.initialize();
recadd.network_ip=cidr_0.toString();
recadd.netmask=cidr_1.toString();
recadd.type=“IP网络”;
recadd.u_discovery_range_item_description=已解析[i]。注释;
var networkadd=recadd.insert();
recadd.initialize();
recadd.name=排除名称;
recadd.start\u ip\u address=excludestart;
recadd.end\u ip\u地址=排除端;
recadd.type=“IP地址范围”;
var rangeadd=recadd.insert();
var recexclude=新记录(“发现范围项目排除”);
recexclude.initialize();
recexclude.name=排除名称;
recexclude.start\u ip\u address=excludestart;
recexclude.end\u ip\u地址=excludeend;
recexclude.parent=networkadd.toString();
recexclude.type=“IP地址范围”;
var excludeadd=recexclude.insert();
}else if(cidrotrange(network.toString())==1023){
//上面的代码来自else if
}否则{

}
要回答您的问题,您只需将该代码块放在函数内部,但如果要在函数外部使用变量rangeadd和excludeadd,则不能在函数内部将其声明为var

更新:如果UptNumber变量将要更改,则应将其设置为传递到函数中的参数,但如果您声明该变量

var rangeadd, excludeadd;

function myFunction(upToNumber) {
    var IPstart = network.toString().substring(0,network.lastIndexOf('.')) + ".1";
    var IPend = network.toString().substring(0,network.lastIndexOf('.')) + ".10";
    //var upToNumber=8;
    for(var i=0;i<upToNumber;i++){
        var res_ipstart = IPstart.split(".");
        res_ipstart[2]=parseInt(res_ipstart[2]) + i;
        var excludestart = res_ipstart.join(".");
        var res_ipend = IPend.split(".");
        res_ipend[2]=parseInt(res_ipend[2]) + i;
        var excludeend = res_ipend.join(".");
        var excludename=excludestart+"-"+excludeend;
    }
    var recadd = new GlideRecord('discovery_range_item');
    recadd.initialize();
    recadd.network_ip = cidr_0.toString();
    recadd.netmask = cidr_1.toString();
    recadd.type = "IP Network";
    recadd.u_discovery_range_item_description = parsed[i].comment;
    var networkadd = recadd.insert();

    recadd.initialize();
    recadd.name = excludename;
    recadd.start_ip_address = excludestart;
    recadd.end_ip_address = excludeend;
    recadd.type = "IP Address Range";
    rangeadd = recadd.insert();

    var recexclude = new GlideRecord('discovery_range_item_exclude');
    recexclude.initialize();
    recexclude.name = excludename;
    recexclude.start_ip_address = excludestart;
    recexclude.end_ip_address = excludeend;
    recexclude.parent = networkadd.toString();
    recexclude.type = "IP Address Range";
    excludeadd = recexclude.insert();
}

// Call function
var upToNumber = 8;
myFunction(upToNumber);
var rangeadd,excludeadd;
函数myFunction(数字){
var IPstart=network.toString().substring(0,network.lastIndexOf('.'))+“.1”;
var IPend=network.toString().substring(0,network.lastIndexOf('.'))+“.10”;
//数值=8;

对于(var i=0;我这里的
|
逻辑或运算符不适合您吗?似乎您希望在多个不同的条件下执行相同的代码,是吗?存储
cidrToRange(network.toString())的结果对您也有好处
在变量中,这样您就不必一直调用函数并计算相同的答案。@mhodges感谢您的回复,它应该可以工作,但var uptNumber=8;将在不同的循环中进行更改。它对您有效吗,或者至少引导您朝正确的方向前进?效果很好。谢谢@primehalo