변수의 값은 복사되며 원래 값과 아무런 관련이 없습니다. 즉, 새 값이 수정되더라도 원래 값은 변경되지 않습니다. JavaScript에서는 기본 유형이 모두 전달됩니다. value.
참조 자체의 복사본이 함수에 전달됩니다. 참조가 가리키는 개체는 복사되어 전달되지 않습니다. (자바에서도 마찬가지입니다.) 함수에서 개체의 속성 값이 변경되면 원래 참조와 동일한 개체를 가리키므로 개체이므로 수정된 값은 원래 참조를 통해 액세스됩니다.
그러나 함수에서 새 객체에 대한 참조만 지정하면 원래 객체의 값은 변경되지 않고 복사된 참조만 변경됩니다.
function testPassValue()
{
var date = new Date(2006,02,27 );
Alert(date.getDate()); //출력은 27
//날짜 참조 자체를 복사하여 passReference에 전달합니다. 참고로 date가 가리키는 객체는 복사되지 않았습니다.
passReference(date);
Alert(date.getDate()); //출력은 12
//위와 동일
changeReference(date);
alert(date.getDate() ); //출력은 여전히 12
}
function passReference(da)
{
//da와 원래 참조가 동일한 객체를 가리키므로 함수 외부에서 무엇을 통해 액세스되는지 원래 참조는 객체의 날짜 속성이 됩니다.
da.setDate(12)
}
functionchangeReference(da)
{
// 이때 da 참조는 실제로 원본 참조입니다. 참조 자체를 다시 할당하는 복사본은 원본 참조에 영향을 미치지 않습니다.
da= new Date(2007,05,11)
특수문자열 3개
JavaScript에서는 String도 참조로 전달됩니다. js에는 charAt 메소드만 있고 해당 수정 메소드는 Java의 String과 동일하며 불변성을 갖습니다. 🎜>
코드는 다음과 같습니다.