JavaScript 전달 변수:값 전달?인용 전달?

변수 A 가 변수 B 에 할당 되면 스 택 의 값 을 새 변수 로 분 배 된 공간 으로 복사 합 니 다.어떻게 이해 합 니까?
 
var x = y = 1;
y = 2;
alert(x);
x 의 값 은 얼마 입 니까?
 
var obj = {};
var sub = {};
sub['id'] = 3;
obj['sub'] = sub;
sub['id'] = 4;
alert(obj['sub']['id']);
obj[sub][id]의 값 은 얼마나 됩 니까?그들 은 정말 너의 기대 에 부합 하 니?우 리 는 각각 2 단 코드 를 실행 하 였 는데,1 단 프로그램 에서 x 의 값 이 바 뀌 지 않 았 고,2 단 프로그램의 obj[sub'][id]의 값 이 바 뀌 었 다 는 것 을 발견 하 였 다.똑 같이 할당 작업 입 니 다.똑 같이 다른 복사 값 을 수정 하 는 것 입 니 다.왜 프로그램 소스 변 수 는 변 하지 않 았 고 프로그램 소스 변 수 는 변 하지 않 았 습 니까?이 전달 은 도대체 값 에 따라 전달 되 는 것 입 니까?아니면 인용 에 따라 전달 되 는 것 입 니까?이 송 봉 이 번역 한'자 바스 크 립 트 고급 프로 그래 밍 2 판'에 서 는 답 이 나 왔 다.시 작 된 이 두 가지 예 에서 사실상 A 의 값 을 B 에 게 복 사 했 습 니 다.다른 것 은 첫 번 째 예 에서 A 의 값 은 int 형의 1 이 고 두 번 째 예 에서 A 의 값 은 주소 지침 입 니 다.이 주소 지침 은 한 대상 에 접근 할 수 있 습 니 다.복 사 를 한 후에 첫 번 째 예 에서 B 의 값 은 새로운 int 가 되 었 습 니 다.그의 값 은 1 입 니 다.두 번 째 예 에서 B 의 값 은 새로운 주소 포인터 가 되 었 고 그의 값 은 이 대상 의 주소 이다.아래 의 예 는
 
function setName(obj){
obj.name = "test1";
obj = {};
obj.name = "test2";
}
var person = new Object();
setName(person);
alert(person.name);
을 이해 하 는 데 도움 을 줄 수 있 습 니 다.setName 함 수 를 호출 하여 변수의 name 속성 을 수 정 했 지만 person.name 의 값 은 변 하지 않 았 습 니 다.함수 에서 obj 가 가리 키 는 주소 가 바 뀌 었 기 때문에 이 주소 의 name 속성 을 수정 하면 원래 주소 의 name 속성 에 영향 을 주지 않 습 니 다.다른 한편,자바 스 크 립 트 의 전달 이 값 에 따라 전달 되 는 것 임 을 입증 했다.

좋은 웹페이지 즐겨찾기