> 웹 프론트엔드 > JS 튜토리얼 > JavaScript에서 변수 전달: 값으로 전달하시겠습니까?_javascript 팁

JavaScript에서 변수 전달: 값으로 전달하시겠습니까?_javascript 팁

WBOY
풀어 주다: 2016-05-16 18:10:31
원래의
991명이 탐색했습니다.

변수 A가 변수 B에 할당되면 스택의 값이 새 변수에 할당된 공간에 복사됩니다.

어떻게 이해하나요?

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

var x = y = 1; >y = 2;
alert(x);

x의 값은 무엇입니까?

코드 복사 코드는 다음과 같습니다.
var obj = {}; var sub = {};
sub['id'] = 3;
obj['sub'] = sub
sub['id'] = 4; sub'] ['id']);


obj['sub']['id']의 값은 무엇입니까? 그들이 정말로 당신의 기대에 부응합니까?
두 코드를 각각 실행한 결과 프로그램의 첫 번째 부분에서 x 값은 변경되지 않았지만 두 번째 부분에서는 obj['sub']['id'] 값이 변경되었음을 확인했습니다. 프로그램이 변경되었습니다. 이는 할당 작업이기도 하며 다른 복사본의 값도 수정하는 것입니다. 프로그램 섹션의 소스 변수는 변경되지 않은 채 유지되지만 프로그램 섹션의 소스 변수는 변경되는 이유는 무엇입니까? 이 이전은 가치에 의한 것인가, 아니면 참조에 의한 것인가?

Li Songfeng이 번역한 "JavaScript 고급 프로그래밍 제2판"에 답이 나와 있습니다.
처음 두 예에서 A의 값은 실제로 B에 복사됩니다. 차이점은 첫 번째 예에서 A의 값은 int 유형의 1인 반면, 두 번째 예에서는 A의 값은 복사 후 첫 번째 예에서 B의 값은 새로운 int가 되고 그 값은 1인 반면, 두 번째 예에서는 B의 값이 새 주소 포인터가 되며 그 값은 이 개체의 주소입니다.

다음 예시는 이해에 도움이 됩니다



코드 복사 코드는 다음과 같습니다. function setName(obj){
obj.name = "test1";
obj = {}
obj.name = "test2"; = new Object() ;
setName(person);
alert(person.name);


보시다시피 setName 함수는 name 속성을 수정하기 위해 호출됩니다. person.name 변수 값은 변경되지 않았습니다. 이는 함수에서 obj가 가리키는 주소가 변경되므로 이 주소의 이름 속성을 수정해도 원래 주소의 이름 속성에는 영향을 미치지 않기 때문입니다. 또 다른 측면에서는 JavaScript가 값으로 전달된다는 것도 확인합니다.
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿