function changeArr(ar){
console.log(ar)
ar = ['12','11'] // <- THIS LINE RIGHT HERE
console.log(ar)
return ar
}
Вы создаете новый массив, а не манипулируете старым. Каждый раз, когда вы вызываете эту функцию, вы создаете новый массив и возвращаете новый (если вы вызовете эту функцию 5 раз, вы получите 5 новых массивов). Тот, который вы передали в качестве входных данных, не имеет значения и остается без изменений.
EDIT Единственное отношение между новым массивом, который вы создаете, и тем, что вы передали в качестве ввода, заключается в том, что они используют один и тот жеимя переменной внутри замыкания, так что внутри этого замыкания вы больше не сможете одновременно обращаться и к входу, и к новому массиву. Но это другая тема ...
Может быть, это прояснит это:
var x = 'something that is not an array'
console.log(changeArr(x));
console.log(x);
И это, возможно, сделает это яснее всего:
var arr = [1,2,3,4];
console.log(changeArr());
console.log(arr);