- KEY 값은 STACK 영역에 저장됨
- VALUE값은 HEAP 영역에 저장됨
예시1
//1번과 2번의 result9의 값은 다르다.
//1번
var obj={first:10, second:20};
var a=obj; //obj의 key 값을 갖고 온다.
var result9=1+obj.first; //11
//2번
var obj={first:10, second:20};
var a=obj; //obj의 key 값을 갖고 온다.
a.first=100; // obj의 key값을 갖고와서 first의 value 값을 수정함.
var result9=1+obj.first; //101
예시2
var myName="김구라"; //김구라
var a=myName; //myName의 key 값이 들어간다.
a="개구라"; //a라는 저장소 자체에 다른 값을 넣어준 것.
console.log(myName); //김구라
console.log(a); //개구라
예시3
문제1.
input에 친구이름을 입력후 추가 버튼을 누르면 배열에 친구이름이 저장되도록해보세요.
(친구이름 저장 후 input에 입력되어 있는 text는 자동으로 지워지게 처리하세요)
어려웠던점
input에 입력되어 있는 text는 자동으로 지워지게 처리하세요
변수 생성시 기존에 있던 데이터가 복사되어 a변수에 저장된다는 개념을 잘 이해 못 했음.
<body>
<input id="myFriend" placeholder="친구이름 입력"/>
<button onclick="add();">추가</button>
<button onclick="list();">목록보기</button>
<script>
var friend=[];
// 문제1.
var add=function(){
//input의 value 값 갖고 오기
var a=document.querySelector("#myFriend").value;
//배열에 넣어주기
friend.push(a);
//input에 입력한 value값 넣어 주기
document.querySelector("#myFriend").value="";
};
/*
오답!! a="";
변수 a에 input요소의 value 값에 접근하는 코드를 담았기때문에
a="";를 작성하면 input에 입력되어 있는 text는 자동으로 지워지게 처리할 수 있을 줄 알았음.
그런데 안됨.
document.querySelector("#inputName").value="";
이렇게 작성해야 처리됨.
value 값을 a변수에 그대로 복사해와서 저장함.
즉, 새로운 저장소인 a에 value 값이 저장됨.
따라서 a="";로 value 값을 지워도 복사본에서만 지워지고 원본은 남아 있기때문에 text가 지워지지 않음.
원본에서 지워야 text가 지워지므로 코드를 아래와같이 작성해야됨.
document.querySelector("#inputName").value="";
*/
</script>
</body>
'Javascript' 카테고리의 다른 글
동기(synchronous) vs 비동기(asynchronous) (0) | 2019.11.08 |
---|---|
반복문 (0) | 2019.11.06 |
IF 구문 (0) | 2019.11.06 |
달리는 캐릭터 만들기 (0) | 2019.11.05 |
그림을 사방으로 움직이고, 회전, 리셋 시켜 보기 (0) | 2019.11.05 |