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