变量问题,如果我更新a,a=b会弄乱b的值;javaScript

变量问题,如果我更新a,a=b会弄乱b的值;javaScript,javascript,Javascript,若我将变量A设置为变量B,那个么有时当我更新A的值时,B也会被更新 var b = 0; var a = b; b++; 现在a和b都返回1;为什么? 我知道你们的意思,甚至是关于对象的部分,我使用firefox在codepen上运行我的代码。通常代码运行良好,但偶尔会出现这种问题 我找到了一个解决方案:- 当事件发生时,它必须发生,因为编译器是如何将变量作为对象读取的。 所以我尝试了下面的解决方案,它成功了 var b = 0; var a = JSON.stringify(b); a =

若我将变量A设置为变量B,那个么有时当我更新A的值时,B也会被更新

var b = 0;
var a = b;
b++;
现在
a
b
都返回
1
;为什么?

我知道你们的意思,甚至是关于对象的部分,我使用firefox在codepen上运行我的代码。通常代码运行良好,但偶尔会出现这种问题

我找到了一个解决方案:- 当事件发生时,它必须发生,因为编译器是如何将变量作为对象读取的。 所以我尝试了下面的解决方案,它成功了

var b = 0;
var a = JSON.stringify(b);
a = JSON.parse(a);
a++;
// now a returns 1 and b returns 0 thanks for helping

原语值按值传递,但对象始终按引用传递。。这只能在您谈论对象时发生

var a=0,
b=a;
a=3;
console.log(a,b);//将会不同
a={a:0};
b=a;
a、 a=3;

console.log(a,b);//会是相同的
确定吗
a==0
在上面运行后在控制台中为true…欢迎使用堆栈溢出!我只是在chrome的控制台上试用了一下。结果是:a=0,b=1(这是预期的)。你能把你的全部密码都贴出来吗?也许它有一个bug…你的原始代码不可能按照你说的去做。这不是Javascript的工作方式。问题不是“我的代码不能这样做”,而是“我的代码正在这样做”。我不知道为什么,但是JS认为b是一个对象。我希望有更多经验的人能指出一个原因,但我怎么能忘记,如果网上充满了巨魔。