>웹 프론트엔드 >JS 튜토리얼 >Js를 처음부터 배우기(기본 데이터 유형 및 참조 유형의 매개변수 전달에 대한 상세 분석)_기초 지식

Js를 처음부터 배우기(기본 데이터 유형 및 참조 유형의 매개변수 전달에 대한 상세 분석)_기초 지식

WBOY
WBOY원래의
2016-05-16 17:56:071069검색

1. 기본 데이터 유형의 매개변수 전달:

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

funciton addTen(num ){
 num =10;
 return num;
 }
 var count=20;
 var result=addTen(count) 🎜> Alert(result); /30


실행 결과는 20과 30입니다. 이 코드에서 count 변수는 addTen 함수에 매개변수로 전달됩니다. 이는 count 변수의 값을 addTen 함수의 매개변수에 복사하는 것과 같습니다. 이때, addTen의 매개변수 num은 함수 내부의 변수로 간주될 수 있습니다. 위 코드에서는 두 개의 기본 데이터형 변수 사이의 값을 복사하는 것과 같습니다. 기본 데이터 유형에는 고유한 메모리 주소가 있으므로 num과 count는 관계가 없습니다. 함수가 실행된 후에는 count의 값이 변경되지 않습니다. 함수 외부의 결과는 직접 대입되므로 result의 값은 함수 30의 결과가 됩니다.
 2. 참조 유형별 매개변수 전달:


함수 setName(obj){
 obj.name="LSN";
 }
var person=new Object()
setName(person)
alert(person.name) );// LSN


실행 결과는 LSN입니다. 이 코드에서 setName 함수는 obj 객체에 속성 이름을 추가하고 "LSN" 속성을 할당합니다. obj는 참조 유형이므로 참조 유형 person이 obj에 할당됩니다. 즉, person과 obj가 참조한다고 합니다. 메모리 주소에 저장되므로 obj에 새 속성 이름이 추가되면 함수 외부의 사람도 변경되며 person.naem의 최종 결과는 LSN입니다.
 3. 전달된 참조 유형 매개변수는 값인가요, 아니면 참조인가요?


function setName(obj){
obj.name="ABC";
obj=new Object()
obj.name="BCD"; }
var person=new Object();
setName(person);
Alert(person.name);// ABC


실행 결과는 ABC입니다. 예제 3과 예제 2의 차이점은 함수에 두 줄의 코드가 더 추가되었다는 점입니다. obj 객체에 새 속성 이름을 추가하고 값을 할당한 후 obj를 새 객체(new Object())로 정의합니다. 그러면 새 개체가 정의됩니다. 그런 다음 이름에 새 값 "BCD"가 할당됩니다. 이때 참조로 전달되면 최종 사람 개체는 name 속성이 "BCD"인 새 개체를 가리키도록 자동으로 수정되지만 최종 표시는 "ABC"가 됩니다. 함수 값 내에서 수정되지만 원래 참조는 변경되지 않습니다. 실제로 함수 내부에서 obj=new Object()를 사용하면 새 obj가 함수 내부의 로컬 객체가 됩니다. 이 객체는 함수가 실행된 후 자동으로 삭제됩니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.