嗶嗶one
2018-12-06 11:16:05
??? //刪除某一購物車中的商品。??? 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
提交
取消