목록Javascript (8)
개발자공부일기
1. HTTP 특성HTTP는 인터넷 상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜입니다. 클라이언트가 서버에게 요청을 보내면 서버는 응답을 보냄으로써, 데이터를 교환합니다. HTTP는 비연결성 및 무상태성 이라는 특징을 가지고 있습니다. HTTP는 요청에 대한 응답을 처리하게 되면 연결을 끊어 버립니다. 따라서 클라이언트에 대한 이전의 상태 정보 및 현재 통신의 상태가 남아있지 않습니다. 서버가 다수의 클라이언트와 연결을 계속 유지한다면, 이에 따른 자원 낭비가 심해집니다. 비연결성 및 무상태성의 특징을 가진다면 불필요한 자원 낭비를 줄일 수 있다는 장점이 있습니다. 그러나 서버는 클라이언트를 식별할 수 없다는 단점 또한 존재합니다. 로그인을 하더라도 다음 요청에서는 해당 클라이..
얕은 복사는 객체의 참조값(주소 값)을 복사하고, 깊은 복사는 객체의 실제 값을 복사합니다. 우리는 먼저 원시값과 참조값을 알아야 한다.원시값(Primitive Type): String, Number, Boolean, Null, Undefined, Symbol참조값(Reference Type): Array, Object, Function원시 값(Primitive Type)원시 값은 단순한 데이터이며, 모든 원시 값은 변경이 불가능하다. 원시 값을 변수에 할당하면 변수에 실제 값이 저장된다. 우리가let a=10;이라고 a에 할당을 하면 메모리주소 1000에 10을 할당하고 주소를 저장한다.그리고a= 20;이라고 재할당을 하면 1000주소에 10이 20으로 바뀌는게 아닌 1100주소에 20을 새로 할당하..
Express란?Express는 웹 및 모바일 애플리케이션을 위한 일련의 강력한 기능을 제공하는 간결하고 유연한 Node.js 웹 애플리케이션 프레임워크이다. 사실상 Nodejs의 표준 웹서버 프레임워크로 불려질 만큼 많은 곳에서 사용하고 있다. 그렇다면 Node.js와 Express는 무슨 관계인가? Node.js는 Chrome의 V8엔진을 이용하여 javascript로 브라우저가 아니라 서버를 구축하고, 서버에서 JavaScript가 작동되도록 해주는 런타임 환경(플랫폼)이라고 했다. Express는 이런 Nodejs의 원칙과 방법을 이용하여 웹애플리케이션을 만들기 위한 프레임워크이다. 프레임워크란?이처럼 목적에 필요한 것을 고민할 필요 없이 이용할 수 있도록 일괄로 가져다 쓰도록 만들어 놓은 '구조..
사용법기존에 우리는 Function을 만들때//1function something(){ //로직}//2const something = function(){ //로직}이렇게 만들고 somthing();으로 함수를 호출합니다. 화살표 함수를 사용하면const something = ()=> { //로직}이렇게 간단히 만들 수 있습니다. 그래서 이 친구를 왜 쓰냐 const multiply2 = (x)=> {return x*2}지금은 짧아서 체감이 잘 안 될 수 있지만 보기가 더 좋습니다. 그리고 파라미터가 하나일때 소괄호 생략도 가능합니다.const multiply2 = x => {return x*2} 중괄호 안에도 return 문 하나밖에 없다면 중괄호까지도 생략이 가능합니다.const multiply2 =..
async/await를 쓰는 이유자바스크립트에는 비동기 처리 방식이 3가지가 있는데 콜백 함수와 이를 개선한 Promise객체 그리고 async/await가 있다.콜백 함수를 사용하면 Callback Hell에 빠지기 쉽고 이를 개선한 Promise도 무분별한 then의 사용으로 Promise Hell에 빠지는 상황이 생긴다. Callback Hell step1(function (value1) { step2(function (value2) { step3(function (value3) { step4(function (value4) { step5(function (value5) { step6(functio..
Promise 객체는 비동기 작업이 맞이할 미래의 완료 또는 실패와 그 결과 값을 나타냅니다.설명Promise 는 프로미스가 생성된 시점에는 알려지지 않았을 수도 있는 값을 위한 대리자로, 비동기 연산이 종료된 이후에 결과 값과 실패 사유를 처리하기 위한 처리기를 연결할 수 있습니다. 프로미스를 사용하면 비동기 메서드에서 마치 동기 메서드처럼 값을 반환할 수 있습니다. 다만 최종 결과를 반환하는 것이 아니고, 미래의 어떤 시점에 결과를 제공하겠다는 '프로미스(promise)'를 반환합니다. Promise는 다음 중 하나의 상태를 가집니다.대기(pending): 이행하지도, 거부하지도 않은 초기 상태.이행(fulfilled): 연산이 성공적으로 완료됨.거부(rejected): 연산이 실패함.대기 중인 프로..
VarES6의 등장 이전에는 문제점들이 있음에도 불구하고 var로 변수를 선언하는 것이 지배적이었는데요. 따라서 새로운 변수 선언 방식이 등장할 수밖에 없었습니다. 우선, 문제점에 대해 논의하기 전에 var 자체에 대해 더 이해해봅시다.Scope of var범위는 기본적으로 변수를 사용할 수 있는 위치를 의미합니다. var 선언은 전역 범위 혹은 함수 범위로 지정됩니다.var변수가 함수 외부에서 선언될 때의 범위는 전역입니다. 즉, 함수 블록 외부에서 var를 사용하여 선언된 모든 변수를 전체 윈도우 상에서 사용할 수 있는 것이죠.var가 함수 내에서 선언될 때는 함수 범위로 지정됩니다. 즉, 해당 함수 내에서만 사용하고 접근할 수 있습니다.자세한 이해를 돕기위해 아래의 예제를 살펴봅시다. var ..
오늘 팀프로젝트에서 forEach안에서 Promise를 사용했는데 작동을 안해서 알아봤다. Promise와 forEach의 동작 차이1. forEach의 동작 방식forEach는 배열의 각 요소를 동기적으로 순회하며 콜백 함수를 실행합니다.즉, 배열의 모든 요소를 비동기 작업 여부와 관계없이 바로 처리합니다.기본 동작const numbers = [1, 2, 3];numbers.forEach((num) => { console.log(num); // 동기적으로 즉시 실행});console.log('Done'); // forEach가 끝나고 실행출력:123Done2. forEach와 비동기 함수forEach에서 콜백 함수가 async일 경우, 콜백 함수가 반환하는 Promise는 무시됩니다.forEach 자..