본문 바로가기
프로그래밍/자바스크립트

JavaScript - 문장, 식별자, 변수선언

by pentode 2022. 4. 1.

1. 문장(Statement)

자바스크립트 문장의 끝에는 세미콜론(;)이 있어도 되고 없어도 됩니다. 하지만 한줄에 여러 문장을 적으려면 세미콜론(;)으로 구분을 해줘야 합니다.

자바스크립트는 대소문자를 구별하며 유니코드를 사용합니다. 그러므로 변수명등 식별자에 "한글"을 사용할 수 있습니다.

 

var 좋아하는과일 = "배";  // 변수에 공백은 사용할 수 없습니다.

 

 

2. 주석

프로그램에 설명을 달 수 있습니다.

 

// 한줄 주석 입니다. 슬래쉬 2개 이후 부터 줄 끌까지 입니다.

/*
   이건 여러줄 주석입니다.
   slash-star부터 다음 start-slash가 나올때까지가 주석입니다.
*/

 

 

3. 식별자(Identifier)

변수명, 함수명, 클래스명등 식별자는 시작하는 글자가 영문자, 유니코드가 가능하며, 특수문자로는 언더스코어(_), 달러기호($)로 시작할 수 있습니다. 뒤의 글자는 숫자도 가능합니다.

 

// 가능한 조합입니다.
let name = "홍길동";
let 이름 = "홍길동";
let _name = "홍길동";
let $name = "홍길동";

// 아래는 문법 오류가 됩니다.
let 9name = "홍길동";   // 숫자로 시작하면 안됩니다.
let #name = "홍길동";   // 시작에 쓸 수 있는 특수문자는 _, $ 밖에 없습니다.
let my name = "홍길동"; // 변수명에 공백은 쓸 수 없습니다.

 

 

3. 변수 선언

변수를 선언하는 방법은 네 가지가 있습니다.

- 변수이름에 직접 값으로 초기화해서 사용하는 방법입니다. 이 경우 어디서 선언하든 전역변수가 되어 버립니다.

 

name = "홍길동";
console.log(name);

결과)
홍길동


var 선언자(declarator)를 사용하여 선언합니다. 이 경우 중복 선언이 가능하고, 선언하는 위치에 따라서 전역변수 또는 함수 레벨의 지역변수 선언이 됩니다.

 

var name;            // 선언만 합니다. 이때 가지는 값은 undefined입니다.
name = "홍길동";     // 선언된 변수에 값을 할당합니다.

var pear = "배";     // 선언과 동시에 값을 할당합니다.
var name = "김철수"; // 같은 이름의 변수를 중복선언할 수 있습니다.


let 선언자를 사용하여 선언합니다. 이 경우 중복 선언이 안되고, 선언하는 위치에 따라서 전역변수 또는 블록 레벨의 지역 변수 선언이 됩니다.

 

let name;            // 선언만 합니다. 이때 가지는 값은 undefined입니다.
name = "홍길동";     // 선언된 변수에 값을 할당합니다.
let pear = "배";     // 선언과 동시에 값을 할당합니다.

let name = "김철수"; // 문법 오류 입니다. let은 중복선언이 안 됩니다.


const를 사용해서 상수를 선언합니다. 선언과 동시에 초기화 해줘야 하고, 나중에 값을 변경할 수 없습니다. 배열이나 객체는 const로 선언하더라도 배열이나 객체의 참조만 상수가 되는 것이므로 내용을 변경하는 것은 가능합니다.

 

const NAME = "홍길동";       // 상수는 선언과 동시에 초기화 해야 합니다.
NAME = "김철수";             // 문법 오류 입니다. 상수는 값을 변경하지 못합니다.

const ARR = ['a', 'b', 'c']; // 상수 배열을 선언합니다.
ARR[0] = 'd';                // 내용 값을 변경하는 것은 가능합니다.

ARR = [];                    // 문법 오류입니다. 다른 배열로 변경할 수 없습니다.


선언하지 않고 바로 쓰는 전역변수나 중복 선언이 가능한 var를 이용한 선언은 프로그램이 대규모화 될수록 오류를 만들 소지가 커집니다. 그래서 ES6에서는 let과 const가 도입 되었습니다. 아직도 위 네가지 방법이 모두 사용될수 있지만 let과 const만 사용하는 것이 좋을것 같습니다.

반응형