ajax回调中的Javascript变量作用域

Javascript variable scope inside an ajax callback

本文关键字:变量 作用域 Javascript 回调 ajax      更新时间:2023-09-26
        var x = this;
        $.post(some_url, some_data).always(function(){
            var y = x;
            var some_other_data = {
                hi: "hi"
            };
            var posting = $.post(some_other_url, some_other_data);
            posting.done(function (data, b, c) {
                do_something();
            }).fail(function (xhr) {
                var response = xhr.responseText;
                //HERE!
                //y is not defined here!
                //x is defined here!
                //if I get rid of var y = x from above, x is not defined anymore!
                debugger
            });
        });

有谁能给我一些启发吗?

我没有看到你的行为

这是正确的,因为x应该在这些范围中可用。

你能提供你注释掉var y = x时使用的确切代码吗?肯定有别的原因(除非是和JQuery的版本有关)