기사에서 언급했듯이: 'ECMAScript의 모든 함수 매개변수는 값으로 전달됩니다'.
이는 한 변수에서 다른 변수로 값을 복사하는 것과 같습니다.
그럼 참조타입 값도 기본타입과 같나요?
예 1:
var person = { name : "leaf" }; function obj(o){ o.name = "kafu"; return o; } var result = obj(person); console.log(result.name);// kafu console.log(person.name);// kafu
참조 유형의 매개변수가 참조로 전달되는 것으로 나타나는 이유는 무엇입니까?
예제 2:
var person = { name : "leaf" }; function obj(o){ o = { name : "kafu" }; return o; } var result = obj(person); console.log(result.name);// kafu console.log(person.name);// leaf
차이:
예제 1에서 person을 obj()에 전달하는 것은 실제로 person 객체의 참조를 복사하여 o(주소로 간주할 수 있음), person 및 o는 동시에 개체를 가리키며, o의 속성을 수정하면 실제로 공동으로 가리키는 개체의 이름 속성이 수정됩니다. 현재 메모리 영역에는 객체가 하나만 있기 때문입니다.
두 가지 예. o 주소는 새로 생성된 다른 개체를 가리킵니다. 이때 메모리에는 두 개의 개체가 있습니다. o가 가리키는 새 개체에 대한 변경 사항은 사람이 가리키는 이전 개체에 영향을 미치지 않습니다.
왜 'ECMAScript의 모든 함수의 매개변수는 값으로 전달된다'고 합니다.
기본적인 유형에 대해서는 이야기하지 않겠습니다.
참조 유형의 경우 매개변수 전달은 객체의 참조 복사본을 전달하는 것입니다. 이는 복사 후 새 주소를 전달하는 것과 같습니다. 이 복사 주소는 실제로 값 전달(공유 전달이라고도 함)로 이해될 수 있습니다.
객체를 사용하여 매개변수로 전달
객체를 매개변수로 전달할 때 매개변수의 순서를 고려할 필요가 없으므로 매우 유용합니다.
위 내용은 js에서 객체를 전달하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!