亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于javascript閉包的問題

關于javascript閉包的問題

嗶嗶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變量的作用域跟數據存儲方式。

查看完整回答
反對 回復 2018-12-24
?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

看你那個function(d)是什么條件

查看完整回答
反對 回復 2018-12-24
?
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));
},
查看完整回答
反對 回復 2018-12-24
?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

delProduct: function (ol, shoppingCartID) {
??????? alert(shoppingCartID);
??????? jConfirm("您將要刪除當前商品,是否確定?", "刪除當前商品確認", function (d) {
??????????? if (d) {
??????????????? alert(shoppingCartID);

第一個alert.shoppingCartID 和 第二個alert.shoppingCartID 作用域都是 相對于delProduct ;?

二個alert的值是上一次執行delProduct方法時的shoppingCartID值,這是正常的,要是不相等 那就不正常了

查看完整回答
反對 回復 2018-12-24
  • 4 回答
  • 0 關注
  • 715 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號