【发布时间】:2020-01-11 02:34:27
【问题描述】:
谁能解释一下为什么输出值改为“20, 2”而不是原来的“1, 2”?
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<p id="demo1"></p>
<script>
var x = {
a: 1,
b: 2
};
var y = x;
y.a = 20;
document.getElementById("demo").innerHTML = x.a;
document.getElementById("demo1").innerHTML = x.b;
</script>
</body>
</html>
【问题讨论】:
-
JS 通过引用传递对象,有一些与此相关的深入问题:stackoverflow.com/questions/16880418/…
-
由于您似乎是 JavaScript 新手,我强烈建议 not 使用
var,因为这被认为是不好的做法。您应该使用let或const。 -
@Seblor 我认为在前端 JS 中使用
var并没有错,事实上,如果您的目标是获得广泛的浏览器支持,我们仍然(不幸的是)必须避免使用 let/const 的边界。 -
@DBS 虽然我理解你的意思,但我真的认为
var的使用和浏览器支持应该留给转译器(如 Babel)。如果人们继续使用var,他们以后将很难改变。此外,使用较新的 ECMAScript 版本通常会提高代码的可读性。
标签: javascript object