Javascript 从一个函数到另一个函数获取全局声明的变量值

Javascript 从一个函数到另一个函数获取全局声明的变量值,javascript,jquery,Javascript,Jquery,关于javascript,我有一个非常常见的问题 我有一个全局声明变量,但是一个带有该变量的函数如何传递全局声明变量中的值,然后在第二个函数中使用它呢 var ID; function test() { $.getJSON('/Test1/GetTestID', function (test) { $.each(test, function () { ID = this["ID"] alert(ID)

关于javascript,我有一个非常常见的问题 我有一个全局声明变量,但是一个带有该变量的函数如何传递全局声明变量中的值,然后在第二个函数中使用它呢

 var ID;

    function test() {

       $.getJSON('/Test1/GetTestID', function (test) {
                $.each(test, function () {
         ID = this["ID"]
         alert(ID);
    }
    })
    }

    function test1() {
             $.getJSON("/TestSite?Test=" + ID; )
    }

    alert(ID);
    test();
    test1();
函数测试警告ID,但当我全局声明它时,它未声明

有人能帮我吗


谢谢

我想您希望
getJSON
是同步的,但事实并非如此。如果调用是相关的,则应嵌套它们:

function test() {
       $.getJSON('/Test1/GetTestID', function (test) {
           $.each(test, function () {
              ID = this["ID"]
              $.getJSON("/TestSite?Test=" + ID; )
           })
       })
}

test1
test
完成其
getJSON
调用之前被调用

因为
getJSON
是异步的,正确的执行方法是在
getJSON
的回调中使用返回的ID:

function test() {    
    $.getJSON('/Test1/GetTestID', function (test) {
        $.each(test, function () {
            var theId = this["ID"];
            alert(theId);
            test1(theId);
        }
    });
}

function test1(id) {
    $.getJSON("/TestSite?Test=" + id);
}

test();

先试试这个,然后将id设置为零

    var ID =0;

ID=this[“ID”]
??你想干什么?@RC。实际上id来自getJson,现在添加了一些东西..您不能,您必须在的回调中调用
test1
getJSON@RC. 因此不可能在全局声明的变量上传递值并在另一个函数中获取它??您忘记了
ID=this[“ID”]
sir上的分号
函数test1(ID)
函数test1(theId)
?@RenTao一些关于JS变量作用域和函数的基本教程可能是一个很好的主意,只是澄清一下sirIn
test()
中的内容,如果
theId
123
那么
test1(theId)
使用值
123
调用
test1
,在
test1
中,我们得到
123
作为
id
的值
theId
仅存在于
test()
中,
id
仅存在于
test1
中。