如何使用可能未定义的参数创建javascript函数?

如何使用可能未定义的参数创建javascript函数?,javascript,parameters,Javascript,Parameters,我发现了关于使用可选参数创建函数的类似问题。但我不断遇到的错误是参数可能不存在。我有一张互动地图,它可以做很多事情。但是,如果outputlayer为null,则该函数将不会执行。该层可能存在,也可能不存在。如果这个可选参数不存在,我似乎不知道如何传入它。谢谢你的帮助 function appdelete(selected,vectorlayer,drawFeature,outputlayer) { $(selected).prev().children().children().eq

我发现了关于使用可选参数创建函数的类似问题。但我不断遇到的错误是参数可能不存在。我有一张互动地图,它可以做很多事情。但是,如果outputlayer为null,则该函数将不会执行。该层可能存在,也可能不存在。如果这个可选参数不存在,我似乎不知道如何传入它。谢谢你的帮助

function appdelete(selected,vectorlayer,drawFeature,outputlayer) {

    $(selected).prev().children().children().eq(2).val('Latitude');
    $(selected).prev().children().children().eq(4).val('Longitude');
    vectorlayer.destroyFeatures();
    drawFeature.activate();

    try {
        map.removeLayer(outputlayer);
    } catch(err) { };
}

首先检查它是否存在,可能是类型

if(outputlayer && "object" === typeof outputlayer) {
    map.removeLayer(outputlayer);
}

首先检查它是否存在,可能是类型

if(outputlayer && "object" === typeof outputlayer) {
    map.removeLayer(outputlayer);
}

您需要检查变量是否存在:

if(outputlayer){
    map.removeLayer(outputlayer);
}

您需要检查变量是否存在:

if(outputlayer){
    map.removeLayer(outputlayer);
}

如果您只关心未定义的,请执行以下操作:

if(outputlayer === undefined) return;


如果您只关心未定义的,请执行以下操作:

if(outputlayer === undefined) return;


默认参数初始化:

outputlayer= (typeof outputlayer=== "undefined") ? "someDefaultValue" : outputlayer;
在你的职能中:

function appdelete(selected,vectorlayer,drawFeature,outputlayer) {
    outputlayer= (typeof outputlayer=== "undefined") ? "defaultValue" : outputlayer;
    $(selected).prev().children().children().eq(2).val('Latitude');
    $(selected).prev().children().children().eq(4).val('Longitude');
    vectorlayer.destroyFeatures();
    drawFeature.activate();

    map.removeLayer(outputlayer);    
}

默认参数初始化:

outputlayer= (typeof outputlayer=== "undefined") ? "someDefaultValue" : outputlayer;
在你的职能中:

function appdelete(selected,vectorlayer,drawFeature,outputlayer) {
    outputlayer= (typeof outputlayer=== "undefined") ? "defaultValue" : outputlayer;
    $(selected).prev().children().children().eq(2).val('Latitude');
    $(selected).prev().children().children().eq(4).val('Longitude');
    vectorlayer.destroyFeatures();
    drawFeature.activate();

    map.removeLayer(outputlayer);    
}

为什么不直接检查
if(outputlayer===undefined)return?如果(outputlayer===未定义)返回,为什么不直接检查
?省去“未定义”复选框,这样你就不会在
null
对象上移除
removeLayer
。省去“未定义”复选框,这样你就不会在
null
对象上移除
removeLayer
。实际上我说错了什么。当输出层不存在时,函数甚至不会开始执行。我得到一个错误:uncaughtreferenceerror:sllayer在函数执行时未定义,即通过outputlayer参数传递的层。我通过jQuery调用这个函数:'$(“#sightlinedelete”)。单击(function(){appdelete($(this),slvectorLayer,sldrawFeature,sllayer)}),我想我们需要查看更多的代码。如果sllayer没有定义,那么当你打那个电话的时候,这个变量就不存在了。事实上,我说错了什么。当输出层不存在时,函数甚至不会开始执行。我得到一个错误:uncaughtreferenceerror:sllayer在函数执行时未定义,即通过outputlayer参数传递的层。我通过jQuery调用这个函数:'$(“#sightlinedelete”)。单击(function(){appdelete($(this),slvectorLayer,sldrawFeature,sllayer)}),我想我们需要查看更多的代码。如果未定义sllayer,则在进行该调用时该变量不存在。