今天遇到了一个神奇的 js 问题,debug 到最后发现了问题,但是不知道原理,有大佬能解释下吗?
function func() {
var s = "heheda";
$.ajax({
type: "post",
dataType: "text",
contentType: "application/json; charset=utf-8",
url: "",
data: JSON.stringify([{}]),
success: function () {
},
error: function (ex) {
//debugger;
s = "inner heheda";
}
});
$.ajax({
type: "post",
dataType: "text",
contentType: "application/json; charset=utf-8",
url: "",
data: JSON.stringify([{}]),
success: function () {
},
error: function (ex) {
//debugger;
bug = "WTF?!";
}
});
}
测试环境:win10 chrome 78.0.3904.108 (正式版本) ( 64 位)
定义一个这样的函数,调用之后在 debug 模式下发现,在使用了外部变量 s 的 ajax callback 里面,s 是可以显示值的。但是在没有使用外部变量 s 的 ajax callback 里面,s 就变成了 undefined !这。。。也太神奇了吧
(不要用 console 打印哦,因为打印也用到了变量 s )
function func() {
var s = "heheda";
$.ajax({
type: "post",
dataType: "text",
contentType: "application/json; charset=utf-8",
url: "",
data: JSON.stringify([{}]),
success: function () {
},
error: function (ex) {
//debugger;
s = "inner heheda";
}
});
$.ajax({
type: "post",
dataType: "text",
contentType: "application/json; charset=utf-8",
url: "",
data: JSON.stringify([{}]),
success: function () {
},
error: function (ex) {
//debugger;
bug = "WTF?!";
}
});
}
测试环境:win10 chrome 78.0.3904.108 (正式版本) ( 64 位)
定义一个这样的函数,调用之后在 debug 模式下发现,在使用了外部变量 s 的 ajax callback 里面,s 是可以显示值的。但是在没有使用外部变量 s 的 ajax callback 里面,s 就变成了 undefined !这。。。也太神奇了吧
(不要用 console 打印哦,因为打印也用到了变量 s )


