노드 복습 4/1

‍박태우·2024년 4월 1일
0

Study-files

목록 보기
1/3

기본적인 자바스크립트


변수에 따른 scope

if(true){
	var x = 3;
}
console.log(x); // 3

if(true){
	const y = 3;
}
console.log(y); // Uncaught ReferenceError : y is not defined

=> 위 결과가 다른 이유 :
var 같은 경우 함수 스코프를 가지므로 if 블럭 관계 없이 접근 가능
const, let 같은 경우 블록 스코프를 가지므로 블록 내부에서만 접근 가능


  1. 화살표 함수와 function의 차이점
var relationship1 = {
    name : 'zero',
    friends : ['nero','hero','xero'],
    logFriends : function(){
        var that = this;
        this.friends.forEach(function(friend){ 
            console.log(that.name, friend);
        });
    },

};
relationship1.logFriends();
// function을 사용하는 경우 함수 내부의 this의 범위가 달라진다.
const relationship2 = {
    name : 'zero',
    friends : ['nero', 'hero', 'xero'],
    logFriends2(){
        this.friends.forEach(friend => { 
            console.log(this.name, friend)
        });
    },
};
relationship2.logFriends2();
// 화살표 함수를 사용하는 경우에는 this의 범위는 동일하다.

=> 위 차이점 때문에 아직까지도 function 키워드가 쓰이고 있다.


  1. 프로미스 여러 개 한번에 실행하기 (Promise.all 이용하기)
const promise1 = Promise.resolve('성공1');
const promise2 = Promise.resolve('성공2');
Promise.all([promise1, promise2])
	.then((result) =>{
  		console.log(result); //['성공1', '성공2']
     })
	.then((error)=>{
  		console.error(error);
	})

  1. reject 발생 시 어느 Promise에서 reject 된지 확인 (Promise.allSettled 이용)
const promise1 = Promise.resolve('성공1');
const promise2 = Promise.reject('실패2');
const promise3 = Promise.resolve('성공3');
Promise.allSettled([promise1, promise2])
	.then((result) =>{
  		console.log(result); //['성공1', '성공2', '성공3']
     })
/*
{status : 'fulfilled', value : '성공1'},
{status : 'rejected', reason : '실패2'},
{status : 'fulfilled', value : '성공3'}
*/

	.then((error)=>{
  		console.error(error);
	})


  1. Node 16 이후에는 reject 된 Promise 에 catch를 달지 않으면 오류
try{
  Promise.reject('에러');
} catch(e){
  	console.error(e); // 오류 발생 (UnhandledProiseRejection)
}

//#############

Promise.reject('에러').catch(()=>{
  // 에러 발생 안함
});
profile
잘 부탁드립니다.

0개의 댓글