-
ES6 자주사용하는 문법 정리개발/자바스크립트 2022. 3. 14. 18:20
var, let, const 선언자
- var
1. 중복선언 가능
var num = 100; var num = 200; console.log(num); //200
2. 일반변수 선언 시 "호이스팅"
console.log(num); //ERROR!!
console.log(num); //undefined var num = 100; console.log(num); //100
var num; console.log(num); //undefined num = 100; console.log(num); //100
var num 을 중간에 선언했기 때문에 최상위로 올라가 var num 선언하여 에러가 나지 않음.
if문,for문 내부에서 선언한 것도 똑같이 적용됨.
함수 안에서 선언은 함수의 최상위로,
함수 밖이나 외부 선언은 전역 최상위로.
- let
1. 중복선언 불가능
let num = 100; let num = 200; //ERROR!!
2. 호이스팅 발생x
console.log(num); //ERROR!! let num = 100; console.log(num);
3. 블록단위 범위
if(true){ let num = 100; } console.log(num); //ERROR!!
if나 for문 안에서 선언시 밖에서 사용x
- const
1. 상수를 선언과 동시에 초기화 해야함
2. 초기값을 설정 후 값을 바꿀 수 없음
const num; //ERROR!! const num = 100; num = 200; //ERROR!!
3. 중복선언 불가능
화살표 함수 arrow function
1. 간결성
const f = function(age){return 100;} //기존 function 표현방식 const f = (age) =>{return 100;} //화살표 함수 표현방식
2. 바인딩하지 않는 this
const calc = { firstNumber: 10, secondNumber: 20, print: function(){ console.log(this); // {firstNumber:10,secondNumber:20} function add(){ console.log(this); // Window{...} !! } add2 = ()=>{ console.log(this); // {firstNumber:10,secondNumber:20} } } }
forEach, for in, for of
- forEach
const arr = [0,1,2,3,4,5,6,7,8,9,10]; arr.forEach(function(element){ console.log(element); // 0 1 2 3 4 5 6 7 8 9 10 }); // 혹은 arrow 함수 가능 arr.forEach(element => console.log(element));
const arr = [0,1,2,3,4,5,6,7,8,9,10]; arr.forEach(function(element, index, array){ console.log(`${array}의 ${index}번째 요소 : ${element}`); });
Map, Set, Array 객체에서 가용가능
element, index, array 등의 callback함수 인자 사용가능
- for in
var obj = { a: 1, b: 2, c: 3 }; for (var prop in obj) { console.log(prop, obj[prop]); // a 1, b 2, c 3 }
모든 객체에서 사용가능
key 값에 접근함
for of
var iterable = [10, 20, 30]; for (var value of iterable) { console.log(value); // 10, 20, 30 }
value 값에 접근함
객체가 [Symbol.iterator] 속성을 가지고 있어야만 사용가능 (직접 명시 가능).
비구조화 할당
let coffee = { name: "Americano", price: 3000 }; let coffeeName = coffee.name; let coffeePrice = coffee.price; console.log(coffeeName); //Americano //비구조화 할당 let {name:coffeeName, price:coffeePrice} = coffee; let {name, price} = coffee; //생략가능 console.log(coffeeName); //Americano console.log(name); //Americano
나머지 매개변수
function add(a,b, ... args){ console.log(a,b,args); //1 2 [3,4,5] } add(1,2,3,4,5);
매개변수 기본값
function add(a, b=10){ console.log(a,b); //5 10 } add(5);
프로미스 (Promise)
function getData(callbackFunc) { $.get('url 주소/products/1', function(response) { callbackFunc(response); // 서버에서 받은 데이터 response를 callbackFunc() 함수에 넘겨줌 }); } getData(function(tableData) { console.log(tableData); // $.get()의 response 값이 tableData에 전달됨 });
비동기 처리를 callback 함수로 해결
function getData(callback) { // new Promise() 추가 return new Promise(function(resolve, reject) { $.get('url 주소/products/1', function(response) { // 데이터를 받으면 resolve() 호출 resolve(response); }); }); } // getData()의 실행이 끝나면 호출되는 then() getData().then(function(tableData) { // resolve()의 결과 값이 여기로 전달됨 console.log(tableData); // $.get()의 reponse 값이 tableData에 전달됨 });
promise 사용하여 해결
- Pending(대기) : 비동기 처리 로직이 아직 완료되지 않은 상태
- Fulfilled(이행) : 비동기 처리가 완료되어 프로미스가 결과 값을 반환해준 상태
- Rejected(실패) : 비동기 처리가 실패하거나 오류가 발생한 상태
new Promise ==> pending 상태
resolve ==> fulfilled 상태 --> then 실행
reject ==> rejected 상태 --> catch 실행