У меня всегда было впечатление, что javascript был языком Pass By Value (где копии всех параметров функции используются внутри функций, а не редактируются внешние переменные по ссылке), поэтому я был шокирован узнайте, что выполнение кода ниже изменяет внешнюю переменную 'свое значение.
var one = [1];
var two = [2];
function broken(arr1, arr2) {
arr1[0] = arr2[0];
return arr1;
}
document.write("One: " + one + "<br>");
document.write("Two: " + two + "<br>");
document.write("Run 'broken': " + broken(one, two) + "<br>");
document.write("One: " + one + "<br>");
document.write("Two: " + two + "<br>");
, который производит этот вывод:
> One: 1
> Two: 2
> Run 'broken': 2
> One: 2 //<------- this line
> Two: 2
Как видите, значение массива 'one' было изменено по ссылке . Что я тут недопонимаю? Спасибо.