js中的传值问题,被引用赋值和传值赋值搞晕了

var a = {name:'1',value:'2'};我想新建一个变量b。使b等于a的值,而且进行操作,但是不能影响a所指向的地址,应该怎么做啊?

赋值前先把json对象转成字符串,再转回来

var a = {name:1, value:2};
var b = JSON.parse(JSON.stringify(a));
b.name = 'mary';
console.log(a===b, a.name, b.name); // false, 1, mary

var b = "";
b==a

把变量b定义成数组,这样就内容相同,地址不同

var b={};
b.push{"name":a.name};
b.push{"value":a.value};
你这样试试

number,string类型都是基本类型,而基本类型存放在栈区,访问时按值访问,赋值是按照普通方式赋值;
对象和数组是通过引用来赋值的,所以改变a的同时b也会跟着改变。

var a = 30;
var b = a;
a = 20;
console.log( b ) // 30

var a = [1,2];
var b = a;
a[0] = 5;
console.log( b ) // [5,2]

var a= {a:111};var b={a:222}; b.a =a.a; console.info(a);console.info(b); a.a+=22;console.info(a);console.info(b);
直接声明两个变量,a.a 归为数值,用jquery clone 达到同样的效果。如果a=b 这种情况是引用传递