JS(WAT):.sort 方法背后的逻辑是什么影响比它所应用的变量更多的变量?
JS (WAT): what is the logic behind .sort method affecting more variables than the one it is applied to?
我对以下难题深感困惑:
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 中的对象值是 references。如果将一个对象分配给两个变量,则两个变量都引用同一个对象。因此在这之后:
a = ["c", "a", "b"]
b = a
c = a
目前只涉及一个数组
您可以像这样复制数组:
c = a.slice(0);
我对以下难题深感困惑:
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 中的对象值是 references。如果将一个对象分配给两个变量,则两个变量都引用同一个对象。因此在这之后:
a = ["c", "a", "b"]
b = a
c = a
目前只涉及一个数组
您可以像这样复制数组:
c = a.slice(0);