변수(Variable)는 (문자나 숫자 같은) 값을 담는 컨테이너로 값을 유지할 필요가 있을 때 사용한다. 여기에 담겨진 값은 다른 값으로 바꿀 수 있다. 변수는 마치 (사람이 쓰는 언어인) 자연어에서 대명사와 비슷한 역할을 한다.
변수의 선언
다음 예제는 변수에 값을 대입한 예제다.
a = 1; alert a+1; # 2 a = 2; alert a+1; # 3
#은 주석(comment)으로 코드에 부가적인 설명을 쓰거나 사용하지 않는 코드를 비활성화시키기 위해서 사용한다. #뒤에 따라오는 내용은 해석되지 않는다.
세미콜론(;)은 하나의 구문이 끝났음을 명시적으로 나타내는 기호다. 다음처럼 한줄에 여러구문을 사용하고 싶을 때 세미콜론이 유용하다. 커피스크립트 측에서는 여러줄의 구문을 표기할 때를 제외하고는 세미콜론을 쓸필요는 없다고 가이드하고 있다.
a = 1; alert a+1;
CoffeeScript에서는 세미콜론을 생략할 수 있는데, 이 경우 줄바꿈을 명령의 끝으로 간주하게 된다.
위의 실습 결과는 각각 2와 3이 출력될 것이다. 변수 a에 담겨 있는 값이 1일 때는 a+1의 결과가 2가 된다. 두번째 결과가 3이 된 것은 a의 값이 2로 바뀌었고, 2+1의 결과인 3이 출력된 것이다.
다음 예제는 변수의 값이 꼭 숫자만 올 수 있는 것은 아니라는 것을 보여주기 위해서 만든 예제다.
first = "coding"; alert first+" everybody";
변수가 없다면
변수는 코드의 재활용성을 높여준다. 예를들어서 100에 10을 더하고, 10을 나눈 후에 다시 10을 빼고 거기에 10을 곱해야 한다고 치자. 그리고 각 단계마다 그 결과를 출력해야 한다면 코드는 아래와 같을 것이다.
alert 100+10; alert (100+10)/10; alert ((100+10)/10)-10; alert (((100+10)/10)-10)*10;
그런데 계산해야 할 값을 100이 아니라 1000으로 바꿔야 한다면 위의 코드를 모두 수정해야 할 것이다. 변수를 적용해보자.
a = 100; a = a + 10; alert a; a = a / 10; alert a; a = a - 10; alert a; a = a * 10; alert a;
위의 코드에서 첫번째 줄의 100을 다른 숫자로 바꾸면 나머지 로직에 대입되는 변수의 값이 모두 바뀐다. 수정해야 할 코드가 적다는 것은 그만큼 해야 할 일이 줄어든다는 의미고, 그 과정에서 버그가 발생할 가능성을 낮출 수 있다. 변수의 효용은 뒤에서 배우게 될 반복문, 조건문, 함수와 결합되면 더욱 더 중요해진다.