不在函数内传递对象中的值
Not passing the value in the object within function
在函数removeItem中的listCount--不传递list.itemCount中的值,而是itemLists.splice(indexOfLi, 1); 在同一个函数中完美地删除了 list.itemList 中的值。我很困惑,这是什么问题?谢谢
const list = {
itemCount: 0,
itemList: []
};
function displayValue(countText, itemLists, listCount, ulVar) {
countText.append(` (${listCount})`);
for (let i = 0; i < listCount; i++) {
createElement(itemLists[i]?.item, itemLists[i]?.time, ulVar);
}
removeItem(itemLists, listCount, countText);
}
function removeItem(itemLists, listCount, countText) {
const fontASTrash = $('.fa-trash');
fontASTrash.off().on('click', function () {
const indexOfLi = $(this).parent().parent().index();
$(this).parent().parent().remove();
itemLists.splice(indexOfLi, 1);
listCount--;
countText.text(`Item List (${listCount})`);
});
}
displayValue(itemListText, list.itemList, list.itemCount, ulItemList);
listCount
函数中的 removeItem
变量不包含对 list.itemCount
值的引用,实际上是一个独立变量。
之所以会出现这种情况,是因为在调用下面的时候:
displayValue(itemListText, list.itemList, list.itemCount, ulItemList);
.itemCount
值作为独立原始值传入,不再是 list
对象的一部分,因此您可以在 displayValue
和 removeItem
中更改它功能,但它将不再增加 list
对象内的值。
当解构对象时也可以说明这种行为,因为执行以下操作将不再编辑 list
中的值:
const { itemCount } = list;
itemCount--; // this will no longer change list.itemCount
修复方法是简单地将对象传递给 displayValue
和 removeItem
函数。例如:
displayValue(itemListText, list, ulItemList);
并将它们与对象引用一起使用。例如list.itemCount--
.
在函数removeItem中的listCount--不传递list.itemCount中的值,而是itemLists.splice(indexOfLi, 1); 在同一个函数中完美地删除了 list.itemList 中的值。我很困惑,这是什么问题?谢谢
const list = {
itemCount: 0,
itemList: []
};
function displayValue(countText, itemLists, listCount, ulVar) {
countText.append(` (${listCount})`);
for (let i = 0; i < listCount; i++) {
createElement(itemLists[i]?.item, itemLists[i]?.time, ulVar);
}
removeItem(itemLists, listCount, countText);
}
function removeItem(itemLists, listCount, countText) {
const fontASTrash = $('.fa-trash');
fontASTrash.off().on('click', function () {
const indexOfLi = $(this).parent().parent().index();
$(this).parent().parent().remove();
itemLists.splice(indexOfLi, 1);
listCount--;
countText.text(`Item List (${listCount})`);
});
}
displayValue(itemListText, list.itemList, list.itemCount, ulItemList);
listCount
函数中的 removeItem
变量不包含对 list.itemCount
值的引用,实际上是一个独立变量。
之所以会出现这种情况,是因为在调用下面的时候:
displayValue(itemListText, list.itemList, list.itemCount, ulItemList);
.itemCount
值作为独立原始值传入,不再是 list
对象的一部分,因此您可以在 displayValue
和 removeItem
中更改它功能,但它将不再增加 list
对象内的值。
当解构对象时也可以说明这种行为,因为执行以下操作将不再编辑 list
中的值:
const { itemCount } = list;
itemCount--; // this will no longer change list.itemCount
修复方法是简单地将对象传递给 displayValue
和 removeItem
函数。例如:
displayValue(itemListText, list, ulItemList);
并将它们与对象引用一起使用。例如list.itemCount--
.