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

时间:2012-12-04 14:45:38

标签: javascript parameters

我发现了有关使用可选参数创建函数的类似问题。但我不断遇到错误是参数可能不存在。我有一个交互式地图,正在做很多事情。但是,如果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) { };
}

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

如果您只关心undefined,请执行以下操作:

if(outputlayer === undefined) return;

if(outputlayer !== undefined) {
    map.removeLayer(outputlayer);
}

答案 3 :(得分:0)

默认参数initialyzing:

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);    
}