javascript - JS (WAT) : what is the logic behind . 排序方法影响的变量多于它所应用的变量?

标签 javascript sorting methods

我对以下难题深感困惑:

a = 10
b = a
c = a
c = c + 1

results in

a = 10
b = 10
c = 11

but the following

a = ["c", "a", "b"]
b = a
c = a
c = c.sort()

results in

a = ["a", "b", "c"]
b = ["a", "b", "c"]
c = ["a", "b", "c"]

因此,对变量应用简单的算术只会影响它所应用的变量 - 这似乎是合乎逻辑的。但是当应用 .sort 方法(和其他方法?)时,它会通过某种向后赋值逻辑影响其他变量......?

谁能解释一下这背后的逻辑 - 我完全迷失了,发现这非常不直观。

最佳答案

数组是一个对象。 JavaScript 中的对象值是引用。如果将一个对象分配给两个变量,则这两个变量都引用同一个对象。因此在此之后:

a = ["c", "a", "b"]
b = a
c = a

仍然只涉及一个数组。

您可以像这样复制数组:

c = a.slice(0);

关于javascript - JS (WAT) : what is the logic behind . 排序方法影响的变量多于它所应用的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30151947/

相关文章:

java - 有没有办法使用 println 进行打印..然后再次返回并使用 println 在第一行中进行打印

c# - 内存违规在运行时动态附加到方法

javascript - 如何在 Node 中流式传输 AWS Lambda 响应?

Python:按数字对列表列表进行排序

ios - Swift - 如何在 Firebase 上创建降序排序查询?

c - 字符串冒泡排序

java - 方法中的公共(public)参数传递

javascript - 如何禁用位置 :fixed in web pages?

javascript - 不返回带有通过 JavaScript 中的 ajax 填充的选项的选择对象

javascript - 使用重复的相似行(使用循环?)简化 JavaScript 函数