javascript中局部变量如何传给全局变量?

function select(str,place){
var point = new BMap.Point(116.331398,39.897445);
var apoint ; //全局变量!!!
var myGeo = new BMap.Geocoder();

myGeo.getPoint(place, function(point){
if (point) {
map.centerAndZoom(point, 10);
map.addOverlay(new BMap.Marker(point));
}

apoint = point; //赋值给全局变量!!!
}, "北京市");

alert(apoint.lng + ", " +apoint.lat); //输出全局变量!!
//apoint的两个值在这里输出为空~!(如果在全局变量处给apoint赋值就会有)
}
请问如何能使apoint获得值??

这是百度地图API的一些调用,被我简化了。
主要是一开始定义的”point“值,在 myGeo.getPoint(*,*,*)中的function(point){ }大括号中会自动改变(大括号外都和定义的一样)。所以需要在大括号内将point的值赋给apoint,不过赋值后在alert(apoint.lng + ", " +apoint.lat);处无法得到。
主要是获得function(point){ }大括号里面point的值,如果能提交到jsp或者后台java也可以,求教!

function select(str,place){
    var point = new BMap.Point(116.331398,39.897445);
    var apoint ;                            //全局变量!!!
    var myGeo = new BMap.Geocoder();

    myGeo.getPoint(place, function(point){ 
        if (point) { 
            map.centerAndZoom(point, 10);
            map.addOverlay(new BMap.Marker(point));
        }

        apoint = point;    //赋值给全局变量!!!
        
        //在这里才能获得point的值,应该将对point的操作放到这里.
        //如果要将point赋值给其它变量,应该赋值后再通知其它函数.
        
    }, "北京市");

    // getPoint的执行可能不会立即完成,所以此时还没有执行apoint = point;这一句,所以apoint也没有被赋值,所以到这里apoint不一定有值
alert(apoint.lng + ", " +apoint.lat);      //输出全局变量!!
        //apoint的两个值在这里输出为空~!(如果在全局变量处给apoint赋值就会有)
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-08-17
var temp=0;//全局变量声明赋值
totla=10;//隐式声明变量,javascript把隐式声明的变量总是当成全局变量来使用的

function add(){
    var num=2;//局部变量
    temp=num;//局部变量赋值给全局变量
    totla=num+2;//局部变量+2赋值给全局变量
}

//调用方法
add();

第2个回答  推荐于2017-09-26
var a=0;//全局变量

function Fn(){
var b=2

a=b; //局部变量传到全局

}
Fn();

alter(a); //2
第3个回答  2013-10-04

闭包

function fun()
{
   var a=1;
   return function(){ 
        return a;   
       }    
}
var result=fun()(); //result=a;

第4个回答  2013-10-04
全局变量在函数外部声明,不要在函数内部声明。追问

在函数外部声明也是不行的..
问题已经解决了,3q

相似回答