# Параметры-объекты JavaScript

Объекты, в отличие от примитивов, передаются по ссылке. Это значит, что изменение объекта внутри функции приведет к тому, что он поменяется и снаружи функции. Смотрите пример:

`function func(arr) { arr[0] = '!'; } let arr = [1, 2, 3]; func(arr); console.log(arr); // выведет ['!', 2, 3]`

Определите, не запуская код, что выведется в консоль:

`function func(obj) { obj.a = '!'; } let obj = {a: 1, b: 2, c: 3}; func(obj); console.log(obj);`

Определите, не запуская код, что выведется в консоль:

`function func(arg) { arg = '!'; } let obj = {a: 1, b: 2, c: 3}; func(obj.a); console.log(obj);`

Определите, не запуская код, что выведется в консоль:

`function func(obj) { obj = '!'; } let obj = {a: 1, b: 2, c: 3}; func(obj.a); console.log(obj);`

Определите, не запуская код, что выведется в консоль:

`function func(arr) { arr.splice(1, 1); } let arr = [1, 2, 3]; func(arr); console.log(arr);`

Определите, не запуская код, что выведется в консоль:

`function func(arr) { arr.slice(1, 1); } let arr = [1, 2, 3]; func(arr); console.log(arr);`

Определите, не запуская код, что выведется в консоль:

`function func(arr) { let newArr = arr; newArr[0] = '!'; } let arr = [1, 2, 3]; func(arr); console.log(arr);`
←→
↑
en ru