我读到了关于JavaScript闭包的内容,我认为我理解它,但显然我没有.
成功函数在请求成功时调用.这意味着当闭包时(function(){
返回obj;
})();执行范围,内部成功函数,不再是函数(evt){…},那么它如何仍然可以访问obj?
封闭如何在这个例子中工作
编辑(在obj之前有var)
function (evt) {
var obj = evt.data.obj,
$.ajax({
type: "POST",
url: url,
data: data,
success: function () {
var o = (function () {
return obj;
})();
}
});
}
解决方法:
在JS中,范围受功能限制.
变量作用域的函数内部的所有内容都可以访问该变量 – 包括其他函数 – 除非在较窄的范围内有另一个同名变量.
也就是说,在这个例子中,没有var关键字来定位obj的范围,所以它是一个全局的.编辑问题后删除
标签:javascript,jquery,closures
来源: https://codeday.me/bug/20190903/1797536.html