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 这种情况是引用传递