如何防止变量在 JavaScript 中发生变化

How to keep a variable from changing in javascript

本文关键字:变化 JavaScript 何防止 变量      更新时间:2023-09-26

我想保留变量的原始信息,以便重置代码会容易得多。

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() 不会更改原始数组,而是返回一个新数组。所以基本上,使用切片,你有两个不同的数组,并且可以在一个数组中插入/删除项目而不会干扰另一个。