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