자바스크립트의 좋은 문법들

1. 공백(white space)

  • 문자를 구분하는 형태: 공백을 사용하지 않으면 하나의 토큰으로 묶여버리는 것을 방지하지 위해 사용한다.
  • 주석의 형태: 코드의 가독성을 높이기 위해 사용한다. 코드에 대해 정확히 설명해야 한다. 자바스크립트에서 블록 주석 많이 사용 되지 않는다. /* */ 은 PL/I(Program Laguage One) 언어에서 많이 사용되었다. PL/I 프로그램에서는 문자열을 제외하고 이러한 조합이 많이 사용 되지 않았다. 하지만 자바스크립트의 정규 표현식을 통해 이러한 조합의 문자가 많이 사용되므로 되도록 이면 사용을 권하지 않는다.
// 문자를 구분하는 형태
const bar = 'test';

// 주석의 형태

// 한줄 주석
/*
    블록 주석
*/

// 자바스크립트에서 블록 주석을 선호 않는 이유
/*
    var bar = /a*/.match(5);
*/

2. 이름(Names)

하나의 문자나 하나 이상의 문자, 숫자, _ 로 이루어진 문자열로 statement, variable, parameter, operator 등에 사용한다. 하지만 예약어(언어상에서 이미 정해놓은 의미있는 단어들)는 이름으로 사용할 수 없다.

3. 숫자(Numbers)

자바스크립트의 숫자형을 하나만 존재.

  • 64비트 부동소수점 형식 (자바의 double형 만 존재)
  • 정수와 실수의 구분이 없으므로 숫자형에서 발생하는 모든 오류 대부분을 줄일수 있다. (short 형을 사용하고 overflow가 발생)
  • NaN(Not a Number): 수치 연산을 해서 정상적이 값을 얻지 못하는 경우
  • Infinity: 무한대를 나타내는 숫자값
console.log(1 === 1.0);
// true

console.log('a' * 1);
//NaN

console.log(1 * Infinity);
//Infinity

4. 문자열(String)

작은 따옴표(‘ ‘)나 큰따옴표(“ “)로 묶어서 나타낸다. 자바스크립트는 유니코드 16비트 문자 셋으로 이루어져있다.

  • 문자하나만 표현하는 타입이 따로 존재하지 않아 문자하나만 포함한 문자열을 사용.
  • escape string: \ 를 붙여 원래의 의미에서 벗어나는 문자
  • immutable 속성을 가짐, 일단 문자열이 생성되면 결코 변경되지 않음
console.log("A" === "\u0041");
// true

5. 문장(Statement)

어떤 동작을 수행하는데 가장 기본적인 요소. expression을 포함하고 있으며, 완결성있게 실행되는 최소한의 코드 단위.

  • <script>는 웹브라우저에서 즉시 실행되는 하나의 컴파일 단위.
  • linker가 존재하지 않지 때문에 javascript은 모든 statement는 공통적인 namespace에 넣어둠.
  • switch, while, if, for, do, return, break, throw…
  • block({}): statement에 집합, 새로운 scope을 생성하지 않음. javascript의 유효범위는 블록단위가 아닌 함수 단위로 정의k
  • https://github.com/DongHyunKims/javascript-notes/tree/master/notes/scope

6. 표현식(Expression)

어떤 다른 값을 반환하는 값, 상수, 연산자, 변수, 함수.

  • 리터럴 값, 변수, 내장값(true, false, null, undefined, NaN, Infinity 등), 이항연산자, 삼항연산자, 함수호출…

7. 리터럴(Literals)

변수 및 상수에 입력하는 변하지 않는 데이터값 그 자체.

  • 상수, 변수: 메모리에 할당된 공간, 리터럴: 해당 공간에 할당된 값
  • 데이터를 표현하는 방식 (expression): 속도의 향상, 가독성이 좋기 때문에 많이 사용한다.
const a = {}; // new Object();
const b = []; // new Array();

토론