repl.it: https://repl.it/BuXR/3
var str = "abc";
var str2 = str.split(" ").join("").split("");
var tmp = str2;
console.log(str2);
// => ['a','b','c']
console.log(tmp.reverse());
// => ['c','b','a']
console.log(str2);
// => ['c','b','a']
Мой вопрос: почему str2 изменяется, даже если он не отменяется?
Это очень расстраивает меня, но я догадываюсь, почему это происходит. Tmp - это просто указатель на исходный str2, и когда я вызываю reverse() на tmp, он фактически меняет str2.
Даже если это действительно то, что происходит, я все еще чувствую, что это очень противоречивый способ работы с языком.