>웹 프론트엔드 >JS 튜토리얼 >함수에 전달될 때 JavaScript에서 기본 값과 참조 값은 어떻게 다릅니까?

함수에 전달될 때 JavaScript에서 기본 값과 참조 값은 어떻게 다릅니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-16 10:21:02476검색

How do primitive values and reference values differ in JavaScript when passed to a function?

JavaScript의 기본 값 및 참조 값

JavaScript에서 변수에는 기본 값 또는 참조 값이 할당될 수 있습니다. 부울, 숫자, 문자열과 같은 기본 값은 변수의 메모리 위치에 직접 저장됩니다.

배열이나 객체와 같은 참조 값을 생성할 때 실제로는 객체나 배열을 저장하는 것이 아닙니다. 변수 자체에 있습니다. 대신, 객체나 배열이 저장된 메모리 위치에 대한 참조를 저장합니다. 즉, 객체나 배열을 변경하면 변수 자체는 변경되지 않았더라도 변경 사항이 변수에 반영된다는 의미입니다.

다음 JavaScript 코드는 기본 값과 참조 값을 생성합니다.

var name = "John"; // Primitive value stored in the variable
var shoppingCart = []; // Reference value stored in the variable

이 예에서 변수 이름에는 기본 값 "John"이 포함되어 있습니다. shoppingCart 변수에는 메모리에 저장된 배열 객체에 대한 참조가 포함되어 있습니다.

값으로 값 전달 vs. 참조로 값 전달

기본 값을 함수에 전달할 때, 값의 복사본이 전달됩니다. 이는 함수 내에서 값을 변경해도 변수에 저장된 값에 영향을 미치지 않는다는 것을 의미합니다.

참조 값을 함수에 전달하면 복사본이 아닌 참조 자체가 전달됩니다. 즉, 함수 내의 객체 또는 배열에 대한 변경 사항은 변수에 저장된 객체 또는 배열에도 영향을 미칩니다.

다음 JavaScript 코드는 값 및 참조로 값 전달:

// Pass by value
var name = "John";

function changeName(name) {
  name = "Jane";  // Changes the local copy of the value
}

changeName(name);

console.log(name); // Outputs "John" because the original value is not changed

// Pass by reference
var shoppingCart = [];

function addProduct(shoppingCart) {
  shoppingCart.push("Apple");  // Changes the object stored in the reference
}

addProduct(shoppingCart);

console.log(shoppingCart); // Outputs ["Apple"] because the original object is updated

첫 번째 예에서 함수changeName에는 기본 값 "John"이 전달됩니다. 함수가 값을 "Jane"으로 변경해도 변수 이름에 저장된 원래 값은 영향을 받지 않습니다.

두 번째 예에서는 addProduct 함수에 참조 값 shoppingCart가 전달됩니다. 함수가 배열에 "Apple" 제품을 추가하면 shoppingCart 변수에 저장된 원래 개체도 업데이트됩니다.

위 내용은 함수에 전달될 때 JavaScript에서 기본 값과 참조 값은 어떻게 다릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.