全局变量被自动改值
发布于 5 年前 作者 zjin 8294 次浏览 来自 问答

var stateArr = app.globalData.stateList; //状态枚举列表

var item = {

“id”: “”,

“text”: “全部”

};

stateArr.unshift(item);

这种执行后app.globalData.stateList 中也多了一个全部的元素

1 回复

array object 这两个类型的赋值,是传址的方式,var stateArr = app.globalData.stateList 的赋值,实际上 stateArr 和 app.globalData.stateList 就成了同一个东西。

如果不想改变,可以用一些转换方式。

1、如果是数组类型,可以使用 slice(),concat() 来生成新数组: var a = [1,2,3]; var b = a.slice();这里b就是新数组

2、如果是对象类型,如果是单纯的数据型对象,如:var a = {b:1,c:2}。可以使用 var b = JSON.parse(JSON.stringify(a))来产生新对象。(数组也可以这么操作)

3、如果是很复杂的,那只能遍历属性赋值了

回到顶部