본문으로 바로가기

key값과 value 값

category Javascript 2019. 11. 6. 12:56
  • 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