我感觉我遇到了一个坑,这是不是bug

环境cocos2d-js 3.9,cocos code ide,平台:谷歌,win下的模拟器,我要读取一个文件,已经加入resource了,test_json,json格式,这个文件里有:

{
    "name" : "Green",
    "ID" : "25"

}


```

如果我这样读取,t是“全局”量,在jsb模拟器可用,但是在浏览器里会出现“Uncaught TypeError: Cannot read property 'ID' of null”
        var t = null;
        cc.loader.loadJson(res.test_json, function(error, data){
            t = data;

        });
        console.log(t.ID);

```

但是,如果我这样,把t改成局部量,模拟器和浏览器里都没问题
cc.loader.loadJson(res.test_json, function(error, data){
            var t = data;
            console.log(t.ID);
        });


```

请问是哪里出了问题?

求大大们编完代码帮助我这个大白解疑答惑啊:9:

这个jsb模拟器和html5的变量作用域是不是有点区别啊?好像是这个问题,我把第一种方法改了,把console.log放到cc.load.loadJson函数里面去,两个平台都能用:10:

我找到了有人遇到和我一样的问题discuss.cocos2d-x.org/t/how-to-load-config-data-from-json-file-in-helloworld/14977/4:6:,唉没人啊

我读到这个帖子,说在web里是异步加载的,json还没加载完?而JSB里没问题,其实是没有加载,啥意思啊
http://discuss.cocos2d-x.org/t/cc-loader-load-and-cc-loader-loadjson-act-differently-in-html5-and-jsb/15321

这不是BUG。

var t = null;
cc.loader.loadJson(res.test_json, function(error, data){
t = data;

    });
    console.log(t.ID);

你要多看看js的异步回调特性。不要用传统的流程看问题。

你这段代码的执行过程 类似于 var t=null; console.log(t); 然后load data to t

噢,谢谢,我用C++的观点看js,我这就去补补课,谢谢指导 :14: