如何防止变量在 JavaScript 中发生变化
How to keep a variable from changing in javascript
我想保留变量的原始信息,以便重置代码会容易得多。
var $dataSets = [1,2,3,4];
var $oldData = $dataSets;
$('.button').click(function(){
$(this).toggleClass('selected');
if($(this).hasClass('selected')) {
$dataSets.splice(1,1);
console.log($dataSets);
} else {
console.log($oldData);
}
});
我对代码的问题是,当我修改$dataSets
时,它也会$oldData
更改。如何防止$oldData
发生变化?
更改为
var $dataSets = [1,2,3,4];
var $oldData = $dataSets.slice();
JavaScript 不会将$dataSets
的值传递给$oldData
,而是传递对$dataSets
自己引用的事物的引用。
这种解决方法之所以有效,是因为 JavaScript 的数组(这就是$dataSets
)有一个名为 slice
的方法,当在没有参数的情况下调用该方法时,该方法将返回数组的副本。
您可以使用函数 Array.slice()
,如下所示:
var $dataSets = [1,2,3,4];
var $oldData = $dataSets.slice();
如文档中所述,slice()
不会更改原始数组,而是返回一个新数组。所以基本上,使用切片,你有两个不同的数组,并且可以在一个数组中插入/删除项目而不会干扰另一个。
相关文章:
- 重新加载页面时Javascript变量发生变化
- Javascript对象颜色动态变化
- 如何将(a*b)两个输入文本值相乘,并在javascript中随文本变化动态显示
- 如何使用Javascript使屏幕颜色随时间变化
- 在我的网站上创建一个在1-10之间不断变化的数字时遇到了问题.Javascript
- JavaScript:为什么不't将背景变化发送给用户's选择(简单)
- 为什么在javascript中的模块模式中实现Lazy函数时范围会发生变化
- HTML/Javascript-360度图片的路径更改(显示不同的变化)
- JavaScript中的style.clip会随着时间的推移而变化
- Javascript Circle滑块随时间变化
- 在异步函数调用过程中,当对象的属性值发生变化时,JavaScript中的对象属性值会发生什么变化
- 画布FPS在调整屏幕大小时发生变化-Javascript
- Javascript:Coderbyte挑战4:字母变化:帮助分析代码:这是如何大写元音的,以及何时执行else语句
- Javascript单元测试依赖关系-当依赖对象发生变化时,如何使测试失败
- 输入时Javascript背景颜色会发生变化
- Javascript旋转初始BG颜色变化
- 按下和向上键时,Javascript图像会发生变化
- 当从servlet返回到JSP时,Javascript的变化非常明显
- 颜色变化Javascript
- 如何检测iOS7 Safari滚动时的高度变化- JavaScript