猿问

js return 如何解释

   getUserData = function () {

        $.ajax({

            "type": "get",

            "url": imgJson,

            "async": false,

            "success": function (data) {

                if(data.code==0){

                    res = data.code;

                }else{

                    res = data.data;

                }

            }

        });

        return res;

    };

执行这个方法的时候是 return 返回值;


还是在以下success之后就res全局污染了


"success": function (data) {

                if(data.code==0){

                    res = data.code;

                }else{

                    res = data.data;

                }

            }


慕田峪7331174
浏览 359回答 1
1回答

慕神8447489

两个都对你的这个ajax是同步的请求 不是异步 就是说等请求结果返回了之后 代码才能继续执行 所以这里的res就是success执行完成后的结果全局污染了, 因为变量没有使用var或者let来声明 就会被声明在全局变量上 所以也是全局污染如果你把ajax中参数 改下 "async": true, 就看出区别了 那在请求返回之前 全局变量res都是undefined 所以还是getUserData函数返回值是undefined 但是在一段时间后其他地方直接使用res变量的话 还是能获取到值的 不过多少时间后能用 就不确定了
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答