>  기사  >  웹 프론트엔드  >  JavaScript_javascript 기술의 값별 전달 및 참조별 전달에 대한 심층적인 이해

JavaScript_javascript 기술의 값별 전달 및 참조별 전달에 대한 심층적인 이해

WBOY
WBOY원래의
2016-05-16 17:10:06844검색

1. 패스 값(값 기준)

변수의 값은 복사되며 원래 값과 아무런 관련이 없습니다. 즉, 새 값이 수정되더라도 원래 값은 변경되지 않습니다. JavaScript에서는 기본 유형이 모두 전달됩니다. value.

코드 복사 코드는 다음과 같습니다.

function testPassValue()
{
var m =1;
var n=2;
//m,n의 값을 복사하여 passValue에 전달
passValue(m,n);
Alert (m); //Put은 원래 값입니다
}
function passValue(a,b)
{
a = a b; //a의 값을 변경합니다. 여기서 a는 복사본입니다. 원래 값
경고(a)
}

출력 결과:
3

1

2. 참고

참조 자체의 복사본이 함수에 전달됩니다. 참조가 가리키는 개체는 복사되어 전달되지 않습니다. (자바에서도 마찬가지입니다.) 함수에서 개체의 속성 값이 변경되면 원래 참조와 동일한 개체를 가리키므로 개체이므로 수정된 값은 원래 참조를 통해 액세스됩니다.

그러나 함수에서 새 객체에 대한 참조만 지정하면 원래 객체의 값은 변경되지 않고 복사된 참조만 변경됩니다.

코드 복사 코드는 다음과 같습니다.

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과 동일하며 불변성을 갖습니다. 🎜> 코드 복사

코드는 다음과 같습니다.

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