//删除某一购物车中的商品。 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值?
求解!
4 回答
莫回无
TA贡献1865条经验 获得超7个赞
闭包,是内部函数能够访问外部函数的变量。比如说,在解析外部函数的时候,事实上,是通过一级一级去寻找变量的。内部函数会先遍历它自己的作用于范围内的变量,找完之后,会找它父作用域范围内的变量。所以你在内部函数会读到外部函数的变量值。建议楼主好好研究一下js变量的作用域跟数据存储方式。
Helenr
TA贡献1780条经验 获得超4个赞
//删除某一购物车中的商品。
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));
},
翻翻过去那场雪
TA贡献2065条经验 获得超14个赞
delProduct: function (ol, shoppingCartID) {
alert(shoppingCartID);
jConfirm("您将要删除当前商品,是否确定?", "删除当前商品确认", function (d) {
if (d) {
alert(shoppingCartID);
第一个alert.shoppingCartID 和 第二个alert.shoppingCartID 作用域都是 相对于delProduct ;
二个alert的值是上一次执行delProduct方法时的shoppingCartID值,这是正常的,要是不相等 那就不正常了
添加回答
举报
0/150
提交
取消