День 6 – Является ли javascript передачей по значению или передачей по ссылке?

И то, и другое! Давайте выясним, как это делается.

Передача по значению

При вызове функции, если значение переменной передается непосредственно как параметр, то изменения, внесенные в этот параметр, не распространяются за пределы функции.

Все примитивные типы данных в javascript передаются по значению.

Пример

var a=10;
console.log("Value of 'a' before method called: "+a);
add(a);
function add(a){
   a++;
   console.log("Value of 'a' inside the method call: "+a);
}

console.log("Value of 'a' outside the method called: "+a);

/*
Output:
Value of 'a' before method called: 10
Value of 'a' inside the method call: 11
Value of 'a' outside the method called: 10
 */

Вход в полноэкранный режим Выйти из полноэкранного режима

Передача по ссылке

Если при вызове функции в качестве параметра передается непосредственно адрес переменной, а не создается ее копия и передается только значение, то это передача по ссылке. Поскольку мы все еще ссылаемся на адрес внутри функции, любое изменение, сделанное с переменной внутри функции, будет передано по всей программе.

Объекты и массивы передаются по ссылке в javascript

Пример

var user={
   id:1,
   firstName:"John",
   lastName:"Doe"
}

console.log("Value of 'user' before method called: "+user.firstName+" "+user.lastName);

print(user);

function print(user){
   user.lastName="Wick";
   console.log("Value of 'user' inside the method call: "+user.firstName+" "+user.lastName);
}

console.log("Value of 'user' outside the method call: "+user.firstName+" "+user.lastName);

/*
Output:
Value of 'user' before method called: John Doe
Value of 'user' inside the method call: John Wick
Value of 'user' outside the method call: John Wick
*/

Вход в полноэкранный режим Выход из полноэкранного режима

Оцените статью
Procodings.ru
Добавить комментарий