- 토큰 : 프로그램을 구성하는 최소 단위
- 어휘 분석 : 자바스크립트 인터프리터는 프로그램을 실행하기 앞서 프로그램을 토큰으로 분해하는데 이 동작을 어휘 분석이라고 함
- 문장 여러개를 중괄호({})로 감싼 코드를 복함문 또는 블록문이라고 함
- C나 Java 등에는 변수 타입이 다양하지만 자바스크립트에는 변수 타입이 없으므로 변수 선언자는 var 하나뿐
ECMAScript 6부터는 var 외에도 let과 const라는 선언자가 추가되었으나, 이 선언자들도 var와 마찬가지로 타입이 없음
- 변수를 선언하지 않은 상태에서 값을 대입하면 자바스크립트 엔진은 그 변수를 자동으로 전역 변수로 선언함
x = 2; // 전역변수 x
console(x); // -> 2
- ECMAScript 5 부터 추가된 Strict모드를 활용하면 선언하지 않은 변수에 값을 대입했을 때 오류가 발생
- 프로그램 중간에서 변수를 선언하더라도 변수가 프로그램 첫머리에 선언된 것처럼 다른 문장 앞에 생성됨
이를 번수 선언의 끌어올림(호이스팅, hoisting)이라고 함
console.log(x); // -> undefined
var x;
- 단, 선언과 동시에 대입하는 코드는 끌어올리지 않음
console.log(x); // -> undefined
var x = 5;
console.log(x); // -> 5
1. 첫글자가 숫자
2. 하이픈(-)은 사용 불가
3. 예약어는 변수로 사용 불가
ex.
1st sum-all new
- 상수는 대문자로 표현한다.
- 논리값을 표현하는 변수에는 이름 앞에 is를 붙인다.
- 생성자 이름을 붙일 때는 파스칼 표기법을 사용한다.
newName myObj
NewName MyObj
new_name my_obj
자바스크립트는 동적 타입 언어
var pi = 3.14;
console.log(pi); // -> 3.14
pi = "원주율";
console.log(pi); // -> 원주율
대다수의 프로그래밍 언어에서는 정수 타임과 부동소수점 타입이 따로 있지만
자바스크립트에는 타입이 없으므로 숫자를 모두 64비트 부동소수점으로 표현한다.
이는 C나 Java에서 사용하는 double 타입에 해당
값이 없음을 표현하기 위한 특수한 값에는 null 과 undefined가 있음
어떤 변수의 값이 undefined가 되는 것은 '값을 할당하지 않은 결과'
- 값을 아직 할당하지 않은 변수의 값
- 없는 객체의 프로퍼티를 읽으려고 시도했을 때의 값
- 없는 배열의 요소를 읽으려고 시도했을 때의 값
- 아무것도 반환하지 않는 함수가 반환하는 값
- 함수를 호출했을 때 전달받지 못한 인수 값
주로 프로그램에서 무언가를 검색했지만 찾지 못했을 때 아무것도 없음을 전달하기 위한 값을 사용됨
템플릿 리터럴이란 역 따옴표(`)로 묶은 문자열
문자열에서 리터럴에서 줄 바꿈 문자를 표현할 때는 이스케이프 시퀀스(\n)을 사용했지만, 템플릿 리터럴을 사용하면 일반적인 줄 바꿈 문자를 사용할 수 있음
var t = `Man errs as long as
he strives`;
이스케이프 시퀀스 문자를 그대로 출력하려면 템플릿 리터럴 앞에 String.raw를 붙인다.
var t = String.raw`Man errs as\nlong as he strives`;
템플릿 리터럴 안에는 플레이스 홀더를 넣을 수 있음
플레이스 홀더는 ${...}로 표기
자바스크립트 엔진은 플레이스 홀더 안에 든 ... 부분을 표현식으로 간주한다.
이를 활용하여 문자열 안에 변수나 표현식의 결과값을 삽입할 수 있음
var a = 2, b = 3;
console.log(`${a} + ${b} = ${a+b}`); // 2 + 3 = 5
var now = new Date();
console.log(`오늘은 ${now.getMonth()+1} 월 ${now.getDate()} 일입니다.`);