[목차]
+
더하기-
빼기*
곱하기/
나누기%
나머지 구하기
각 연산자의 앞뒤에는 값이 필요한데, 연산의 대상이 되는 값을 피연산자라고 한다. (예를 들어 2*3
라는 수식에는 *
라는 연산자와, 2
와 3
이라는 총 두 개의 피연산자가 있다.)
더하기(+
), 빼기(-
), 곱하기(*
), 나누기(/
)를 뜻하는 각 기호는 우리가 흔히 알던 계산법을 그대로 따르며 마지막 %
연산자는 왼쪽 피연산자를 오른쪽 피연산자로 나눴을 때의 나머지값을 구한다.
그리고 수학에서 '같다'를 의미하는 =
기호를 프로그래밍 언어적으로는 '대입 연산자'라고 부른다.
변수란 이름 그대로 바뀔 수 있는 수를 말한다.
예를 들어서 다음 코드를 실행한다고 해보자.
a=1
b=1
a+b=
당연히 a+b의 결과값은 2가 될 것이다.
그런데 a의 값을 100으로 재할당했다면?
a=100
b=1
a+b=
똑같은 a+b이지만, a의 값이 바뀌었기 때문에 결과는 101이 된다.
이와 같이 a와 b처럼 값이 바뀔 수 있는 것을 변수라고 한다.
자바스크립트에서 변수를 설정할 수 있는 예약어에는 다음 3가지가 있다.
var
(variable의 약자)let
(가장 일반적인 예약어. ES6에 추가)const
(Constant의 약자. ES6에 추가)[변수 선언 방법]
예약어 (
let
,const
) 변수명 (any words
) =데이터
unexpected token 'const'
)var number = 1
console.log(number)
위의 코드를 입력하면 콘솔창에는 1이 출력된다.
그렇다면 각각의 예약어들이 지닌 차이는 무엇일까.
결론부터 말하자면 var
은 현재 잘 쓰이지 않는 추세이다.
var
에는 hoisting 기능이 내제되어 있는데, 이 기능에 의하면 변수나 함수를 아무리 아래에 선언해도 변수/함수 선언을 맨 위로 올려버리기 때문이다.
다음 예를 들어보자.
console.log(num)
num = 6
var num
위와 같은 비정상적인 코드를 입력하면 에러가 발생해야 정상임에도 콘솔창에 정상적으로 결과값 6이 출력된다.
var
가 가진 호이스팅 기능이 변수 선언을 최상단으로 올린 것이다.
console.log(num)
let num
num = 6
반면에 let
을 사용하면 정상적으로(?) 에러가 발생하는 것을 확인 할 수 있다.
마지막으로 const
는 상수를 선언하는 기능을 한다.
const num
num = 7
console.log(num)
출력 결과는 에러 발생...
그 이유는 위에서 이미 변수명 num을 6로 선언했기 때문이다.
const
를 쓰려면 다른 변수명으로 추가적인 변수 선언을 할 수 밖에 없다.
(const
는 특정 값을 변경시킬 수 없도록 제한하고 싶을 때 사용한다.)
(let
은 재선언은 불가능하지만 재할당은 가능한 반면,
const
는 값을 선언한 뒤에는 재선언과 재할당 모두 불가능하다.)
그렇다면 이러한 변수는 왜 사용하는 것일까?
이유는 다양하다.
그 중 하나의 이유는 이러한 변수를 이용하면 여러군데 흩어져 있는 값들을 단번에 바꿀 수 있다는 것이다.
예를 들어 한 문자열 안에서 같은 "Hello"라는 단어가 여러 번 나올 때,
이를 모두 "World"로 바꾸고 싶다고 해 보자.
이 때 모든 "Hello"들이 변수로서 존재하고 있다면 그 변수만 바꿔주면 한 번에 모든 "Hello"를 "World"라는 문구로 교체할 수 있다.
또한 변수 설정은 프로그램에서 가독성을 높여주고 유지보수에도 유리하다.
복잡한 코드를 변수 안에 저장하면, 필요할 때마다 변수명을 찾아서 데이터 값을 불러낼 수 있기 때문이다. (변수에는 자바 스크립트로 표현 가능한 모든 데이터를 저장할 수 있다.)
let string = '1'
console.log(string)
let string2 = 1
console.log(string2)
두 변수 선언의 차이는 데이터의 '타입'이다.
자바 스크립트의 데이터 타입에는 글자(string)와 숫자(number) 2가지 존재하는데, 따옴표(``, '', "")로 감싼 것은 글자(string type)로 해석된다.
let string = "block"
let string2 = 'chain'
위 코드를 입력 후
console.log(string + string2)
을 입력하면
blockchain이라는 글자가 출력된다.
(string 타입은 +
연산자만은 연결의 의미로 사용할 수 있다.)
반면에
let num = 1
let num2 = 2
위 코드를 입력 후
console.log(num + num2)
콘솔창에는 3이 출력된다.
(number 타입은 변수의 연산 결과가 출력된다.)
또한
console.log(string + num) = block1
console.log(num + string) = 1block
다른 데이터 타입끼리 +
연산자로 연결짓는 것 역시 가능하다.
예제)
let strNum = '191'
let num3 =3
console.log(strNum + num3)
출력 결과는 1913.
(-
연산자를 쓰면 188이 뜬다. 앞의 strNum이 넘버 타입으로 바뀐 건데 자바스크립트의 버그에 가까우니까 그냥 넘어가자...)
번외) [변수명 ~ 카멜 표기법]
var fistName // 카멜 표기법. 뒤에 오는 단어 첫글자는 대문자
var FirstName // 파스칼 표기법. 단어마다 대문자.
var first_name // 스네이크 표기법.
일반적으로는 카멜 표기법을 많이 쓰인다.
앞으로 변수명을 지정할 때는 카멜 표기법을 쓰도록 하자.