变量在附加到回调函数(Javascript/Dojo)时未定义
我在全局范围内声明了此变量:变量在附加到回调函数(Javascript/Dojo)时未定义,javascript,callback,scope,global-variables,arcgis-js-api,Javascript,Callback,Scope,Global Variables,Arcgis Js Api,我在全局范围内声明了此变量: var wait; 然后,在事件侦听器内部,我为这个变量分配一个函数,然后附加一个回调函数:(我正在使用Dojo,通过ArcGIS Javascript API) 此操作将从地图中删除某些图层: doThis(){ var layer = map.getLayer("mapLayer"); if (layer) { map.removeLayer(layer); } …但是当我运行它时,我得到一个
var wait;
然后,在事件侦听器内部,我为这个变量分配一个函数,然后附加一个回调函数:(我正在使用Dojo,通过ArcGIS Javascript API)
此操作将从地图中删除某些图层:
doThis(){
var layer = map.getLayer("mapLayer");
if (layer) {
map.removeLayer(layer);
}
…但是当我运行它时,我得到一个错误,说“等待”是未定义的
我的代码中其他地方也有类似的语法,这是因为在事件侦听器中为我分配了回调吗?如果是,是否有解决办法?我确实需要在doNextThing()开始之前完成此()操作。在JavaScript中,函数始终返回值,如果跳过函数中的
return
关键字,则它会自动返回undefined
。在你的代码中,这个代码没有返回语句。这就是为什么wait
未定义并且下一步失败的原因
应该退还什么?从所示示例中,我们只能推断从doThis()
提供addCallback
函数返回的对象。由于ArcGIS是基于Dojo Toolkit构建的,因此它可能就是对象。您的示例中没有任何其他线索。wait=doThis();正在对“doThis()”的结果进行赋值。如果'doThis'是一个函数,那么您应该尝试'wait=doThis'我认为不是这样,这会导致一个错误:'wait.addCallback不是一个函数'。您希望addCallback
从何而来?我添加了一个返回值,但这不会改变结果。
doThis(){
var layer = map.getLayer("mapLayer");
if (layer) {
map.removeLayer(layer);
}