Template Literal

Template Literal, Template String이라고 불림.
백틱 `을 사용하고 내장된 표현식 ${} 을 허용하는 문자열임.
여러 줄로 이루어진 문자열과 보간기능을 사용할 수 있음.
01.js

  const t = function (str) {
    // `을 사용해야 함.
    return `Hi ${str}!,
  Welcome to test world.
  Let's do the HellJS
  `;
  }

  const result = t('ASDF');
  console.log(result);
728x90
반응형

var의 문제점.

헷갈리는 함수 레벨 스코프.

if 문 안에서 선언 했지만 if 문 밖에서 사용 가능.
var는 코드 블럭을 무시하기 때문에 전역 변수가 됨.
01.js

  (function() {
    if( true ) {
      var variable = 'function scope';
    }
    console.log( variable );
  })();

중복 선언이 가능.

전역 변수가 된 var가 중복 선언 까지 됨.
02.js

  (function() {
    var variable = 'function scope';
    var variable = 'duplicated';
    console.log( variable );
  })();

var keyword 생략 가능

var keyword 를 생략해도 변수가 선언됨.
03.js

  (function () {
    variable = 'no keyword';
    console.log(variable);
  })();

Hoisting 문제

Hoisting?
선언은 코드 처음에 실행되지만, 변수에 값을 할당한 곳에서 값이 할당하는 문제.
04.js

  (function() {
    console.log( variable );
    var variable = 'hoisted';
  })();

  //  -> 위 코드는 호이스팅에 의해 아래와 같다.

  (function() {
    var variable;
    console.log( variable );
    variable = 'hoisted';
  })();

let keyword

let keyword를 사용하면, 문제가 해결됨.
05.js

//  1. 블록 레벨 스코프
{
  let variable = 'block scope';
  console.log( variable );
}

//  2. 중복 선언 => syntax error
{
  let variable = 'block scope';
  let variable = 'duplicated';
  console.log( variable );
}

//  3. 호이스팅   => syntax error
{
  console.log( variable );
  let variable = 'hoisted';
}

const keyword

상수 선언 키워드로 재 할당이 불가능하고, 선언과 동시에 할당이 이루어 져야 한다.
06.js

  //  Privitive
  let a = 'a';
  a = 'b';
  console.log( a );

  const c = 'c';
  c = 'd'; // ->  TypeError

const 는 call by value로 주로 Object나 Array를 선언하는데 사용되며,
내부의 요소는 재할당 가능하다.
07.js

  //  Reference
  let e = {
    foo : 'foo',
  };
  e = {
    bar : 'bar'
  };

  console.log( e );

  const f = {
    foo : 'foo',
  };
  /*
  f = {
    foo : 'bar'
  };  //  -> TypeError
  */
  f.foo = 'bar'

  console.log( f );
  /**
  * const c = { c : 'c' };
  * c    -> call by ref
  * c.c  -> call by value
  */
728x90
반응형

회사에서 ES5 이상의 문법을 팀 내부 교육을 진행하게 됐음.
부담스럽긴 하지만 하라고 하면 해야 하니, 내용을 정리했고.
정리하다 블로그에 올리면 좋을 거 같아서 포스팅하기로 함.

모오오던 JS

일반적으로 사용하는 JS 문법은 ES5 문법으로 2009년 12월에 출판되었음.
2015년 ES6가 출판되었고, ES6 이후의 문법을 Modern JavaScript라고 부르는 추세임.
(과연 언제까지 이 문법이 모던하다고 할진 모르겠지만)
그 후로 매년 새로운 업데이트가 있었고.
IE 같은 구형 브라우져는 최신 문법을 지원하지 않지만, babel과 같은 도구를 이용하면 구형 브라우져에서도 작동하게 변환할 수 있음.

목차

아랫부분은 더 포스팅 하고 싶지만, 일하면서 여기까지 정리 할 수 있을지 모르겠으므로 보류.

  • truthy and falsy
  • 단축 평가 논리 연산
  • 함수의 기본 파라미터
  • 조건문 더 스마트하게 쓰기

그외 버전별 주요 문법

버전별로 발행된 문법이나 함수들은 많지만, 주로 알아야 하는 것들은 다음과 같음.
한번씩 찾아 보기를 권장함.

  • ES6
    • let, const
    • module (import, export)
    • Promise
    • template literal
    • arrow function
    • class
    • generater
    • default parameters
    • for...of
    • map, set, weakMap, weakSet
  • ES7
    • 구조 분해 할당. (비구조화 할당 ||Destructuring Assignment)
    • 비동기를 위한 await, async
    • 변수와 함수의 블록 스코프
  • ES8
    • Generator와 Promise를 위한 await, async 구조체
  • ES9
    • rest, spread 문법
    • 비동기 이터레이션
    • Promise.prototype.finally()
  • ES10
    • Object와 Array
728x90
반응형

+ Recent posts