강좌 & 팁
자바스크립트를 잡아라.-08 |
안녕하세요. 송기석입니다.
길에 쌓인 눈을 보니 겨울이 왔다 것을 느낄 수 있습니다. 특히 더 추운 것은 눈이 와서인지 영하로 떨어진 기온 때문인지 요즘 춥습니다. 추운 겨울 감기에 걸리면 고생합니다. 모두 감기에 조심하세요.
오늘은 식과 문장에 대하여 써보겠습니다.
식과 문장의 구조 |
자바스크립트의 소스코드는 문장의 집합입니다. 문장은 문장과 식으로 구성됩니다. 식은 식과 연산자로 구성됩니다. 결국 자바스크립트의 소스코드를 분해하다 보면 식별자와 리터럴 식 그리고 연산자로 분해됩니다.
ECMAscript 5를 참고하여 자바의 예약어는 키워드, 미래의 예약어, null, true, false가 있습니다.
키워드
break, case, catch, continue, default, in, do, else, finally, for, if, try,
instanceof, new, return, switch, throw, typeof, var, void, while, delete
미래의 예약어
class, import, interface, enum, implements, package, extends, let,
protected, super, private, static, const, public, export, yield
식별자
- 예약어 이외의 단어
- Unicode의 비공백 문자로 시작하고, 그다음에 Unicode 문자 또는 숫자가 이어지는 단어
- 단어의 길이 제약이 특별히 없음
l 유니코드 문자는 한글이나 히라가나도 포함하지만 실무에서는 다음과 같은 규칙을 따라야 합니다.
n 영문자(대문자나 소문자), _(언더스코어 문자), $(달러 문자), 중 하나로 시갖하고 영문자, _, $, 숫자(0~9)가 이어지는 단어
리터럴 표기
리터럴(literal) 표기란 코드상에 쓰인 값이 실행 시 그 값 그대로 의미를 갖는 구조
예시
숫자 : 100 문자열 값 : “foobar” 불린 값 : true null 값 : null 객체 : {x:1, y:2} 배열 : [3, 1, 2] 함수 : function() {return 0;} |
문장이란? |
프로그래밍 언어에서 문장(statement)는 해당 언어 문법에서 명확히 정의된 구문규칙으로 정해 집니다. 문장은 프로그램이 실행할 때 실행 됩니다. 자바스크립트의 문장은 세미콜론(;)으로 구분됩니다. 블록문의 끝에는 필요하지 않습니다.
블록문에는 세미콜론이 필요 없지만 있다 하더라도 실행에 문제가 없습니다. 그러다 보니 블록문에도 세미콜론을 넣는 경우가 많은데 문장의 끝을 나타내는 세미콜론은 블록문에 필요 없습니다.
블록문에 세미콜론이 있어도 되는 것과 마찬가지로 문장 끝에 세이콜론이 없다고 하더라도 자바스크립트에는 줄바꿈을 했을 때 생략된 세미콜론을 자동으로 보완하는 사양이 있습니다. 하지만 세미콜론의 생략하면 버그의 원인이 됩니다.
앞 강좌에서 소개한 JS Bin입니다. 2군데의 경고를 보여 주고 있지만 실행은 됩니다.
블록문(복합문)
블록문은 중괄호({}) 사이에 문장을 나열한 문자으로서, 여러 문장의 집합을 문장으로 취급합니다.
변수 선언문
예시
// 변수 선언의 예
var foo; var foo, bar; // 여러 개의 변수를 선언 |
식문장
예시
var a; a == 0; // 식문장(결과적으로 아무것도 하지 않는다.)
var b; |
두 가지 모두 식문장이다. a의 경우 의미가 없는 식문장이지만 에러가 나지 않는다. 이런 경우에 주의하자.
빈문장
예시
// 빈 블록문 while (조건식) { }
// 빈 문장 while (조건식) ;
// 빈 문장을 포함하는 블록문 while (조건식) { ; } |
빈 문장을 사용하지 않아도 의미상으로나 문법상으로 문제가 없습니다.
빈문장을 쓸 때 예시 3번째처럼 블록 안에 쓰는 것이 좋습니다.
빈문장의 의미는 아무것도 하지 않는다는 의도를 코드를 읽는 사람에게 전달할 수 있습니다.