쓸글이 많아 질거같아서..컴터 키고 글쓴다..

 

내가 참고로 자바스크립트 안해봐서 모름..근데 니 글만 봐도 졸라 니가 아직 콜바이레퍼런스와 콜바이 벨류가 뭔자 모르는거같아..

 

function set(obj) {

obj.name = "adun";

obj = new Object();

obj.name = "ㅅㅅㅅ";

}


var person = new Object();


set(person);


console.log(person.name);      -> 'adun'

 

이코드는 지금 어떤 언어를 써도 다 결과가

adun이 나옴...

 

이거는 니가 원하는 답을 원하는거랑 전혀 상관없다..

왜냐하면 니가 obj = new Object();를 했기 때문이다..

니가 저렇게 하므로써 지금 두개의 객체가 생긴거다..

person이 가르키는건 person.name -> 'adun'

obj .name -> 'ㅅㅅㅅ'인거야..

 

한마디로 저걸로 알수가 없는건 둘째치고 니가 원하는거랑은 전혀 상관없는 코드라는거다..

그럼 니 말대로라면 지금 자바,C#,C++모두 콜바이 벨류라는 니가 프로그래밍 역사를 흔드는중이다..

 

변수는 변수이고 메모리는 메모리야..

그게 어디를 가르키느냐의 문제를 너는 이상한쪽으로 말하는거고..

 

내가 글쓰다보니 너가 지금 변수가 변수를 참조한다는 이상한논리로 가는데..매개변수는 엄현한 선언된 매개변수다..

 

obj라는 매개변수에 니가 person이라는거를 넣은거야..obj = person이 된거지..

 

그럼 obj랑 person이랑은 같은넘을 가르키지만 니가 중간에 obj = new Object();라는 넘으로 person을 가르키던걸 끊었어..

 

그니까 당연히 person이 아닌 새로운 객체에 ㅅㅅㅅ를 넣은거고..결과는 바뀌지 않는거야..

 

이거는 이해하고 다시 배틀해라...ㅋㅋㅋㅋ