变量在附加到回调函数(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);
}