변수란 무엇일까요?
저번 포스팅에서는 값을 저장하는 장소라고 표현했습니다. 간단하게 표현했지만 사실 이게 딱 맞는 표현입니다. 프로그래밍에서는 값이라고 표현될 수 있는 것들이 여러개가 있고, 그것들은 모두 변수에 담길 수 있습니다.
그럼 값은 무엇이 있을까요?
자바스크립트에서 값은 문자, 숫자, 배열, 객체, 불린, undefined, null 등이 있습니다.
변수를 선언하는 방법을 알아보도록 하겠습니다.
변수는 어떻게 선언할 수 있을까요? 앞에 명령어를 붙여주면 됩니다.
var, let, const를 붙여주면 변수로서 사용할 수 있습니다. 예전에는 var만 사용했지만 let과 const는 var의 한계점을 해결하기 위해 새롭게 추가되었습니다. 변수라고 표현했지만 정확히는 const를 붙이면 상수, let은 변수를 나타냅니다. 상수는 항상 같은 값이죠? 그래서 상수 선언을 하면 값을 변경할 수 없습니다. 값이 변경되려면 let을 사용해야 합니다.
일단 우리가 추가할 코드를 알아보도록 하겠습니다.
let player = "X";
let winner = null;
혼란스럽지만.. 저 코드를 분석해볼까요? let을 붙이면 변수가 된다고 했죠 ? 우리는 player와 winner라는 이름의 변수를 선언한 것입니다. 이름에서 유추할 수 있듯이 저 안에 들어있는 값은 바뀌게되겠죠. 가령 "X" 라고 적혀 있는 값이 "O"로 바뀌고, "O"였던 값이 "X"로 바뀔 것입니다.(tic tac toe 게임에서는 "O"플레이어와 "X"플레이어가 있으니까요.)
winner라는 변수는 승자가 정해지면 승자("O"플레이어 또는 "X"플레이어)가 담기게 됩니다.
변수의 이름을 적고나면 = 를 씁니다. 변수에 값을 할당하는 기호입니다. 그리고 등호의 오른쪽에 값을 쓰면 됩니다.
값들 중에 우리가 사용한 것은 문자와 null입니다.
문자는 "" 와 ''사이에 써 넣으면 됩니다. 코드를 보면 우리는 "X"라고 써 넣은 거죠.
null은 "값이 없다. 일단 비우겠다."라는 뜻입니다. 왜냐하면 승자는 정해지지 않아서 모르니 null이란 값을 사용한 것입니다.
변수를 사용하는 이유?
같은 값들이 계속 반복되니 변수로 지정해서 간편하게 사용할 수 있습니다. 편의성을 늘려주죠.
"이름"
"이름"
"이름"
"이름"
// 위처럼 이렇게 사용하는 것보다
name이라는 변수에 "이름"이라는 문자가 담겨있다고 생각해보세요.
let name = "이름";
name
name
name
name
똑같아 보일 수도 있지만 "이름"을 "닉네임"으로 바꿔야하는 순간이 오면
그냥 값만 사용했을 땐 하나하나 바꿔야하지만 변수를 활용했을 땐 변수에 담긴 값만
바꿔주면 밑에 변수가 사용된 것들은 자동으로 값이 바뀝니다. 얼마나 편한지 아시겠나요?
다음엔 함수를 배워보고 게임에 필요한 함수를 만들어보도록 하겠습니다.
(jjangjjangman 태그 사용시 댓글을 남깁니다.)
호출에 감사드립니다! 즐거운 스티밋하세요!
짱짱 감사합니다 ㅎㅎ
중간중간 그림도 재밌고 설명 잘해주시네요~ 감사합니다 ㅎㅎ
ㅎㅎㅎ 더 쉽게 설명하고 싶은데 잘 안되네용 ~ 감사합니다!
그냥 어렵다 생각하고 읽으니 머리속에 안들어오네요 ㅎㅎㅎ
다른 주제들로도 여러개 쓰고 싶네요 ~ 가볍게 읽을만한 그런 것들이요 ㅋㅋ 다크호스님도 쉽고 재밌다고 느낄 그런글을 ...! ㅋㅋ
게임하고는 거리가 멀어서 이해는 안되지만 설명 꼼꼼히 잘 하셨네요^^
감사합니다 ㅎㅎ!
한가지 팁을 드리면요.
게임을 만드는 툴이 있으면 계속 게시물에 툴을 앞에 올리시고요.
아니면 그냥 코딩을 하는 거면 코딩 편집기 툴이나 온라인 편집기를 계속 링크걸어 놓으세요.
그래서, 계속 설명하시는 부분을 여기서 테스트 해보세요라고 하면서 독자들에게 참여을 유도해주세요.
ㅎㅎㅎ 그래야겠네요 참여유도가 중요하죠 ~
var 이 있는데 let은 왜 쓰나요? 똑같은 변수가 아닌가요? var는 숫자랑 문자 다 쓸 수 있다고 알고 있는데, const는 상수라지만, let의 의의는 무엇인지 궁금합니다.
헤헤 똑같은 변수입니다~ let은 에크마스크립트6에 추가된 새롭게 변수를 정의하는 방법입니다. 즉 var는 옛날꺼 let은 지금꺼입니다ㅎㅎ var를 쓰시는 분들도 있지만 언젠가는 let으로 다 바뀌게 되겠지요. var랑 let은 여러 차이가 있습니다. 그중 한개를 말씀드리면 변수의 범위(스코프)의 차이가 있습니다. var는 함수안에서만 스코프가 달라졌는데요. 즉 어떤 함수로도 감싸지 않고 반복문을 쓰면 for(var i =0; .....) 저 i는 전역변수였습니다. 그러나 let은 함수가 아니라 블록단위로 나누기 때문에 전역변수가 되지 않고 계속 i를 사용할 수 있습니다. 그럼 이렇게 생각하실 수도 있겠는데요. "var가 불편했으면 var의 기능을 바꾸지 왜 새로운 let을 쓰게하냐" 만약 var를 그대로 쓰면서 var를 바꾸면 이전에 작성된 코드들은 다 엉망이 될 것입니다. 그래서 let이 추가된 것입니다.