Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   В чём разница? (https://javascript.ru/forum/misc/80390-v-chjom-raznica.html)

Svib 30.05.2020 10:48

В чём разница?
 
Объясните, пожалуйста, в чем разница между этими кодами? Почему в первом случае переменная "а" меняется, а во втором случае нет?
Пример 1:
function def1() {
  let a = [0,1];
  def2(a);
  console.log(a);//[ 10, 1 ]
};
function def2(a) {
  console.log(a);//[ 0, 1 ]
  a[0] = 10;
};
def1();

Пример 2:
function def1() {
  let a = [0,1];
  def2(a);
  console.log(a);//[ 0, 1 ]
};
function def2(a) {
  console.log(a);//[ 0, 1 ]
  a = 10;
};
def1();

рони 30.05.2020 11:08

Svib,
Копирование по ссылке
a[0] = 10; использовали указатель a, для изменения свойства обьекта по этому указателю.
a = 10; изменили указатель с обьекта на строку.

Svib 30.05.2020 13:38

Спасибо большое за ответ!


Часовой пояс GMT +3, время: 15:37.