0

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

4 回答 4

3

首先检查它是否存在,也许是类型。

if(outputlayer && "object" === typeof outputlayer) {
    map.removeLayer(outputlayer);
}
于 2012-12-04T14:48:24.983 回答
1

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

if(outputlayer){
    map.removeLayer(outputlayer);
}
于 2012-12-04T14:48:56.533 回答
1

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

if(outputlayer === undefined) return;

或者

if(outputlayer !== undefined) {
    map.removeLayer(outputlayer);
}
于 2012-12-04T14:50:33.957 回答
0

默认参数初始化:

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);    
}
于 2012-12-04T15:02:12.960 回答