제가 JavaScript에 대해서 정리하는 것은 책을 읽고, 프로젝트를 뛰었고, 공부를 하면서 알아온것을 정리할겸. 저 혼자가 아닌 많은 사람들도 이 블로그를 보고 한번 더 생각하고자 정리하게 되었습니다.
저는 능력자분들처럼 잘아는게 아닙니다. 저도 공부하는 중에 있는 사람이고 아마 틀린지식을 정리하고 있을 수 있습니다. 그럼 과감하게 저에게 댓글이나 메일을 통해서 도움을 주시기 부탁 드리겠습니다.
JavaScript란 무엇인가요?
작고 가벼운 객체지향적인 스크립트 언어입니다. cross-platform을 지원하죠. 기본적으로 Array, Date, Math와 같은 객체들과 +,- 같은 연산자, 제어구조, 반복문등과 같은 기능을 지원합니다. 그리고 추가적인 객체를 추가하여 다양한 목적으로 확장 할 수 있죠.문법의 기본
JavaScript는 대소문자를 구별하며 Unicode문자셋을 사용합니다. JavaScript는 명령 하나하나를 문(statement)이라고 부릅니다. 그리고 세미콜론(;)으로 분리를 합니다.var swordName = "excalibar"; // 구문임
var swordType = 'Hero Weapon'; // 구문임.
JavaScript는 왼쪽에서 오른쪽으로 문(statememt)를 탐색하면서 토큰, 제어문자, 줄바꿈 문자, 주석 또는 공백으로 구성된 업력 요소의 시퀀스(순서,열)로 변환합니다.
그리고 여러분들이 구문(statement) 끝에 세미콜론(;)을 넣지 않아도 자동으로 세미콜론을 넣어주는 ASI(Auto Semicolon Insertion)라는 기능이 있습니다. 하지만 항상 세미콜론을 추가해서 구문을 끝내시기 바랍니다. 안그러면 부작용이 있을 수 있습니다.
ASI는 세미콜론을 삽입하는 3가지의 rule이 존재합니다.
ASI 세미콜론 룰
1. Line Terminator랑 '}' 앞에 자동으로 세미콜론이 붙습니다.- Line Feed (\n)
- Carriage Return (\r)
- Line Separator (라인 구분 문자)
- Paragraph Separator (단락 구분 문자)
{ 1 2 } 3
// ASI를 통해 아래처럼 변환된다.
{ 1 2 ;} 3;
2. single input stream이 프로그램에서 분석 못할때 세미콜론이 붙습니다.
a = b
++c
// ASI를 통해 아래처럼 변환된다.
a = b;
++c;
3. 위의 2가지 룰을 제외한 아래 항목들(Line Terminator가 아닌것)
- PostfixExpressions(++ and --)
- continue
- break
- return
- yield, yield*
- module
return
a + b
// ASI를 통해 아래처럼 변환된다.
return;
a + b;
주석
주석(Comments)는 Java나 C나 다른 언어들과 비슷합니다.// 한 줄 주석
/** 여러줄 주석
많은 내용을 쓸 수 있죠.
**/
/* 중첩된 주석은 /* 사용이 불가능 */ 합니다 */
선언
JavaScript는 선언은 3가지 방법이 존재 합니다.var : 변수를 선언, 및 추가로 동시에 값을 초기화 할 수 있다.
let : 블록범위(Scope)내의 지역 변수를 선언, 동시에 값을 초기화 할 수 있다.
const : 일기 전용의 상수를 선언 한다.
var 특징
1. var로 선언한 변수들은 변수가 선언된 실행 컨텍스트(execution context)안에서 만들어 지며 선언되지 않은 변수는 항상 전역변수입니다. Window속성으로 들어갑니다.2. 선언된 변수들은 어떠한 코드가 실행되기 전에 만들어 지며 선언되지 않은 변수들은 변수들을 할당하는 코드가 실행되기 전까지는 존재 하지 않습니다.
3. 선언된 변수는 실행 컨텍스트의 프로퍼티(속성)을 변경하지 않으며 선언되지 않은 변수는 변경이 가능 합니다.
이러다보니 특별한 사항이 아닌이상 왠만하면 var로 선언하기를 추천합니다.
호이스팅
var특징 2번을 보면 var로 선언된 변수들은 어떠한 변수가 실행되기 전에 만들어지기 때문에 코드안에서 var로 선언한 변수는 최상위에 선언한것과 동일합니다. 이렇게 변수선언이 함수 또는 전역 코드 최상단위로 이동하는 것처럼 보이는 것을 호이스팅이라 합니다.do = "work";
var do;
// 위 코드는 암묵적으로 아래와 같이 사용된다고 보시면됩니다.
var do;
do = "work";
COMMENTS