Javascript 如何在else语句中将变量值设置为不变?

Javascript 如何在else语句中将变量值设置为不变?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,考虑这个简单的下拉菜单案例:arg的值最初是['a','b','c'],一旦选择橙色选项,arg将设置为['a','b'],并且不会更改回去,除非重新定义arg。我想先将arg重置为其状态,然后单击除橙色以外的选项选择下拉菜单选项 我的问题是,在我的实际代码中,在选择选项之前,arg是由复杂的逻辑定义的,因此无法通过显式地重新写入else条件中的所有逻辑来重置。是否有方法执行操作{//reset arg到其下拉前的状态} 让arg=['a','b','c']; $('#下拉列表')。更改(函数

考虑这个简单的下拉菜单案例:
arg
的值最初是
['a','b','c']
,一旦选择橙色选项,
arg
将设置为
['a','b']
,并且不会更改回去,除非重新定义
arg
。我想先将
arg
重置为其状态,然后单击除橙色以外的选项选择下拉菜单选项

我的问题是,在我的实际代码中,在选择选项之前,
arg
是由复杂的逻辑定义的,因此无法通过显式地重新写入
else
条件中的所有逻辑来重置。是否有方法执行
操作{//reset arg到其下拉前的状态}

让arg=['a','b','c'];
$('#下拉列表')。更改(函数(){
if($('#下拉列表').val()=='orange'){
arg=['a','b'];
控制台日志(arg);
}
否则{
//我可以在不显式执行arg=['a','b','c']的情况下将arg的值重置为['a','b','c']吗?
//类似arg.reset()的内容
控制台日志(arg);
};
})

苹果
橙色
梨
您可以将数组(及其偏差)存储为选项的数据属性:

//准备。。。
设arr=[“a”,“b”,“c”];
$(“#下拉选项”).data(“选项”,arr)
.filter('[value=“orange”]')。数据(“选项”、[“a”、“b”);
$('#下拉列表')。更改(函数(){
arr=$(“:selected”,this).data(“选项”);//只需抓取
控制台日志(arr);
}).触发(“变更”)

苹果
橙色
梨

您可以使用辅助变量,例如
argOriginal
,来存储原始列表:

让arg=['a','b','c'];
设argOriginal=arg;
$('#下拉列表')。更改(函数(){
if($('#下拉列表').val()=='orange'){
arg=['a','b'];
控制台日志(arg);
}
否则{
arg=原始arg;
控制台日志(arg);
};
})

苹果
橙色
梨

您可以将获取
arg
的“复杂逻辑”放入一个函数中,然后在需要重置arg时再次调用该函数(您可以通过提供不同的参数来更改函数的行为)@RoryMcCrossan将其存储在两个变量中并复制它听起来有点麻烦?是的@NickParsons方法要好得多,这取决于计算的性能