Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 代码不’;当我将数组索引存储为变量时,它不起作用_Javascript_Arrays_Variables_Vue.js_Dry - Fatal编程技术网

Javascript 代码不’;当我将数组索引存储为变量时,它不起作用

Javascript 代码不’;当我将数组索引存储为变量时,它不起作用,javascript,arrays,variables,vue.js,dry,Javascript,Arrays,Variables,Vue.js,Dry,我正在使用VueJS显示食品杂货的列表。每个杂货项目可以增加或减少。我编写了以下函数来减小: deleteItem:函数(索引){ 此.items[索引]。数量-=1; 如果(此.items[索引].数量

我正在使用VueJS显示食品杂货的列表。每个杂货项目可以增加或减少。我编写了以下函数来减小:

deleteItem:函数(索引){
此.items[索引]。数量-=1;
如果(此.items[索引].数量<0){
此.items[索引]。数量=0;
};
}
我试图使我的代码更干燥,所以我尝试将
this.items[index].quantity
放入变量中。我想知道为什么我这样做时代码不起作用:

deleteItem:函数(索引){
var itemQuantity=this.items[index].quantity
项目数量-=1;
如果(此.items[索引].数量<0){
此.items[索引]。数量=0;
};
}

问题是您正在修改一个值而不是一个引用

值类型(如数字和布尔值)始终被复制。这意味着您将丢失对该值来源的引用

例如:

var obj={
a:1
};
var a=对象a;
a+=1;
console.log(a);//改变

console.log(对象a);//未更改
问题是您正在修改一个值而不是一个引用

值类型(如数字和布尔值)始终被复制。这意味着您将丢失对该值来源的引用

例如:

var obj={
a:1
};
var a=对象a;
a+=1;
console.log(a);//改变

console.log(对象a);//未更改
您可以直接传递项目而不是索引:

newvue({
el:“应用程序”,
数据:函数(){
返回{
项目:[{名称:'产品1',数量:15},
{名称:'产品2',数量:2},
{名称:'产品3',数量:12}]
}
},
方法:{
添加数量:功能(项目,数量添加){
如果(项目数量+数量添加<0){
项目数量=0;
}否则{
item.quantity+=要添加的数量;
}
},
增量:功能(项目){
本条添加数量(第1项);
},
减量:功能(项目){
本条添加数量(项目-1);
}
}
});

{{item.name}{{item.quantity}}
减量
增量

您可以直接传递项目而不是索引:

newvue({
el:“应用程序”,
数据:函数(){
返回{
项目:[{名称:'产品1',数量:15},
{名称:'产品2',数量:2},
{名称:'产品3',数量:12}]
}
},
方法:{
添加数量:功能(项目,数量添加){
如果(项目数量+数量添加<0){
项目数量=0;
}否则{
item.quantity+=要添加的数量;
}
},
增量:功能(项目){
本条添加数量(第1项);
},
减量:功能(项目){
本条添加数量(项目-1);
}
}
});

{{item.name}{{item.quantity}}
减量
增量

因为它不是引用因为它不是引用