//删除某一购物车中的商品。
delProduct: function (ol, shoppingCartID) {
alert(shoppingCartID);
jConfirm("您将要删除当前商品,是否确定?", "删除当前商品确认", function (d) {
if (d) {
alert(shoppingCartID);
var shoppingCartIDs = new Array();
shoppingCartIDs.push(shoppingCartID);
sCart._delProducts(shoppingCartIDs);
}
});
},
为啥第二个alert的值是上一次执行delProduct方法时的shoppingCartID值?
求解!
闭包,是内部函数能够访问外部函数的变量。比如说,在解析外部函数的时候,事实上,是通过一级一级去寻找变量的。内部函数会先遍历它自己的作用于范围内的变量,找完之后,会找它父作用域范围内的变量。所以你在内部函数会读到外部函数的变量值。建议楼主好好研究一下js变量的作用域跟数据存储方式。
看你那个function(d)是什么条件
//删除某一购物车中的商品。
delProduct: function (ol, shoppingCartID) {
alert(shoppingCartID);
jConfirm("您将要删除当前商品,是否确定?", "删除当前商品确认", (function(sCartID){ return function (d) {
if (d) {
alert(sCartID);
var shoppingCartIDs = new Array();
shoppingCartIDs.push(sCartID);
sCart._delProducts(shoppingCartIDs);
}
})(shoppingCartID));
},
delProduct: function (ol, shoppingCartID) {
alert(shoppingCartID);
jConfirm("您将要删除当前商品,是否确定?", "删除当前商品确认", function (d) {
if (d) {
alert(shoppingCartID);
第一个alert.shoppingCartID 和 第二个alert.shoppingCartID 作用域都是 相对于delProduct ;
二个alert的值是上一次执行delProduct方法时的shoppingCartID值,这是正常的,要是不相等 那就不正常了