js里面的引用传递(数组赋值)

先看一个例子:

var  a={name:[],list:[]};var list2=[1,3];a.name= list2;a.list= list2;a.list[1]=4;console.log(a.name);

本以为会输出[1,3],实际上输出[1,4],因为name和list都指向了list2的地址:

解决方案:

var  a={name:[],list:[]};var list2=[1,3];a.name= $.extend(true,{},list2);a.list= $.extend(true,{},list2);a.list[1]=4;console.log(a.name);

或者:

var  a={name:[],list:[]};var list2=[1,3];a.name= list2.concat();a.list= list2.concat();a.list[1]=4;console.log(a.name);

concat()表示连接数组,里面可以加值

posted @ 2020-10-21 19:17  RookieCoderAdu  阅读(477)  评论(0编辑  收藏  举报