목차

PWA

  • description : PWA
  • author : 오션
  • email : shlim@repia.com
  • lastupdate : 2021-02-01

Ref


Promise [프로미스]


var 변수 선언


mutable[뮤터블, 가변의] vs immutable[이뮤터블, 불변의]


let 사용법

{ 
   let 변수명;         // 변수 선언
   let 변수명 =;    // 변수 선언과 동시에 값 할당
}


const 사용법

{
   const 변수명 =;     // 변수 선언과 동시에 반드시 값을 할당해야 함
}


블록 스코프(block scope) 예시 - let과 const로 선언한 변수의 사용법

{
   let apple = 3;
   console.log(apple);     // 3 출력
   apple = 5;              // let 선언 변수는 재할당 허용
   console.log(apple);     // 5 출력
   let apple = 7;          // 같은 이름으로 중복 선언을 허용하지 않으므로 오류!
 
   const car;              // 선언과 동시에 값을 할당하지 않으므로 오류!
   const carname = "하이브리드카";
   console.log(carname);   // '하이브리드카' 출력
   carname = "디젤카"      // const 선언 변수는 불변이므로 오류;
}
console.log(apple);       // 블록 밖이므로 오류!
console.log(carname);     // 블록 밖이므로 오류!


모던 자바스크립트에서 변수 사용 3원칙

  1. const를 가장 먼저 사용한다. 특히 변숫값을 변경할 필요가 없을 경우 사용한다
  2. 만약 중간에 변숫값을 변경해야 한다면 const 대신에 let을 사용한다.
  3. var는 ES6+에서는 사용하지 않는다. 다만 전역 변수가 꼭 필요할 때 최상위 수준에서만 예외로 사용한다.


템플릿 리터럴 [Template Literal]

console.log('사과:' + apple + ', 자동차:' + carname);     // 이전 스타일
console.log(`사과: ${apple}, 자동차: ${carname}`);        // ES6 스타일(템플릿 리터럴)


화살표 함수


전통적인 함수 선언 방식

const fnPlusNumbers = function (pNum1, pNum2) {
   return pNum1 + pNum2;
}


화살표 함수로 구현

const fnPlusNumbers = (pNum1, pNum2) => {
   return pNum1 + pNum2;
}


return 키워드를 생략한 화살표 함수

const fnPlusNumbers = (num1, num2) => num1 + num2;


const fnPlusNumbers4 = pNum => pNum + 1;
const fnSayHello = () => '안녕하세요!';


동기 처리 방식과 비동기 처리 방식 비교

구분 동기 처리 방식 비동기 처리 방식
실행 순서 모든 코드가 위에서 아래 순서로 실행 코드들이 독립적으로 실행
실행 대기 명령을 요청한 후 결과가 나올 때까지 계속 기다림 명령을 요청한 후 결과가 나올 때까지 기다리지 않고 다음 작업을 연이어 수행
반환 결과를 계속 기다리므로 시간 지연이 큼 결과가 완료되면 다시 돌아와 필요한 것을 마무리하는 방식


콜백 함수


function fnFunctionA(pNumA) {
   console.log(pNumA);
}
function fnFunctionB(pNumB, fnCallback) {
   fnCallback(pNumB);     // 매개변수로 받은 함수를 실행하여 비동기 처리의 시작 담당
}
 
fnFunctionB("콜백 함수 실핼!", fnFunctionA);


function fnFunctionB(pNumB, fnCallback) {
   fnCallback(pNumB);     
}
 
// 매개변수 전달 시 함수 선언과 정의를 함께 작성함: 비동기 처리의 완료 담당
fnFunctionB("콜백 함수 실핼!", function fnFunctionA(pNumA) {
   console.log(pNumA);
});


프로퍼티 접근

var person = {
  name: 'Lee'
};
 
// 마침표 표기법에 의한 프로퍼티 접근
console.log(person.name);   // Lee
 
// 대괄호 표기법에 의한 프로퍼티 접근
console.log(person['name']);   // Lee


var person = {
   name: 'Lee'
};
 
console.log(person[name]);   // ReferenceError: name is not defined

* 위 예제에서 ReferenceError가 발생한 이유는 대괄호 연산자 내의 따옴표로 감싸지 않은 이름, 즉 식별자 name을 평가하기 위해 선언된 name을 찾았지만 찾지 못했기 때문이다. * 객체애 존재하지 않는 프로퍼티에 접근하면 undefined를 반환한다. 이때 ReferenceError가 발생하지 않는 데 주의하자.

var person = {
   name: 'Lee'
};
 
console.log(person.age);   // undefined
* 프로퍼티 키가 식별자 네이밍 규칙을 준수하지 않는 이름, 즉 자바스크립트에서 사용 가능한 유효한 이름이 아니면 반드시 대괄호 표기법을 사용해야 한다. 단, 프로퍼티 키가 숫자로 이뤄진 문자열인 경우 따옴표를 생략할 수 있다. 그 외의 경우 대괄호 내에 들어가는 프로퍼티 키는 반드시 따옴표로 감싼 문자열이어야 한다는 점을 잊지 말자.


ES11, ES6 Syntax Summery