보호되어 있는 글입니다.
자바스크립트는 싱글스레드이므로 여러 코드를 동시적으로 실행 할 수 없고. 하나씩 실행할 수 밖에없게 설계되어있다. 또한 오래걸리는 작업들은 비동기적으로 실행되기때문에, 종종 예측하기 힘든 일들이 발생한다. 멀티쓰레드를 가능하게 해주는 것이 Web Workers다. 웹워커는 스크립트 연산을 주 실행 스레드 와 별개로 어딘가의 공간에서 별도의 스레드로 실행 할 수 있게 한다. 그렇기에 무겁고 오래걸리는 작업들을 Web Workers에서 실행 해 주기도 한다. 이말인 즉, => (보통 UI 스레드)가 멈추거나 느려지지 않고 동작할 수 있다. 1. Worker등의 생성자로 생성을 한다. 2. 이 후 얘네는 별도의 공간을 받아서 다른 전역 맥락에서 실행되는데 이공간이 바로 "워커 스레드" 3. 전용 워커의 경우 ..
value vs Identifier value 값이란 string number 등의 primitive 속성 메모리 주소와 상관없이 그 안의 값이 같으면 같다고 한다.(a=3, b=3이면 다른 메모리주소이지만 안의 값이 같기에 같다고하는 것) 계속 복사본을 만들기 때문에 상태 변화에 안전하다 연산을 기반으로 로직 전개하게 된다 identifier ✔ => 객체지향적 코드작성시에는 identifier!! 주소값을 비교한다. 하나의 원본 (참조) 연산이 아니라 메세지를 기반으로 로직 전개 다형성 polymorphism = 대체가능성 + 내적일관성 대체가능성이란? 자식은 부모를 대체할 수 있는 것. 확장된 클래스는 대상 클래스의 대체 할 수 있다. => 콘솔을 보면 TRUE가 나온다. const Worker =..

자바스크립트는 아시다시피 콜백큐에서 한줄씩 실행되는 싱글스레드 언어이다. thread란? 스레드는 어떠한 프로그램이 실행되는 작업을 말한다. 싱글 스레드는 한 번에 하나의 작업만 수행할 수 있으며, 멀티 스레드는 한 번에 여러 개의 작업을 수행할 수 있다. 싱글스레드인 자바스크립트가 비동기가 가능한 이유는? 자바스크립트 역시 싱글 스레드로 한 번에 하나의 코드만 실행시킬 수 있다. 따라서 애니메이션이 지속됨과 동시에 상품 상세페이지로 이동하기 위한 클릭 등의 작업이 불가하다. 하지만 브라우저에서 이와 같은 업무가 가능하다. 왜 그럴까? 정답!! 이벤트루프 변수가 저장되는 heap이라는 공간, 코드를 실행시켜주주는 콜스택이있다. 콜스택은 한번에 한줄의 코드만 실행시킨다. 전문용어로 싱글스레드 기다림이 필요..

자바스크립트는 명령형(imperative), 함수형(functional), 프로토타입 기반(prototype-based) 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어다. 오늘은 객체지향 프로그래밍. 함수형 프로그래밍. 그리고 프로토타입에 대해서 다시 복습해볼것이다. 객체지향 프로그래밍 객체지향 프로그래밍이란. 하나의 모델이되는 청사진을 만들고, 그 청사진을 바탕으로 한 객체!를 만드는 프로그래밍 패턴. 여기서 청사진은 class, 만들어진 객체는 Instance라고 불린다. 인스턴스를 만들때 어떻게 만드는가? ----------------> new라는 키워드를 통해서 만들게된다. ES5에서는 function키워드를 썻으나. ES6에서는 class가 추가되어 class키워드를 사용하여 만든..

표현식과 연산자 값은 다양한 방법으로 만들수가있다. 이때 다양한 방법이 표현식 표현식에는 여러가지가있다. 아래와 같다 // 리터럴 표현식 10 // 식별자 표현식 -> 변수 sum // 연산자 표현식 10 + 20 // 함수/메소드 호출 표현식 square() 표현식은 결국 값처럼 사용할 수 있다. let myage = '31'; // 연산자 표현식 (워너비 트웬티..) myage - 11; // 식별자 표현식과 숫자 리터럴과 연산자의 조합 연산자 하나이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 연산 등을 수행해 => 하나의 값을 만듬 // 산술 연산자 5 * 4 // 20 // 문자열 연결 연산자 'My name is ' + 'Lee' // "My name is Lee" // 할당 연산..

프로미스 예 : 내가 슈퍼스타 가수라고 가정해보자 나는 노래부르눈 이채야채 🎤 다음앨범을 기다리는 이채야채의 팬들에게..카카오톡으로 내 채널을 추가하라고해주고(구독리스트) 자동으로 앨범이나오거나 중요사항이있으면 연락이 가도록 하는 프로세스를 만든다고 해보자 '제작 코드(producing code)'는 원격에서 스크립트를 불러오는 것 같은 시간이 걸리는 일을 한다. 소비 코드(consuming code)'는 '제작 코드’의 결과를 기다렸다가 이를 소비한다. 프라미스(promise) 는 '제작 코드’와 '소비 코드’를 연결해 주는 특별한 자바스크립트 객체다. 위 비유에서 프라미스는 '구독 리스트’. '프라미스’는 시간이 얼마나 걸리든 상관없이 약속한 결과를 만들어 내는 '제작 코드’(이채야채의 앨범)가 준비..

프로그래밍 프로그래밍이란? 컴퓨터에게 실행을 요구하는 인간 - 컴퓨터 일종의 커뮤니케이션 컴퓨터는 0과 1밖에 모르는 기계다. 이 기계에게 원한는것을 실행 할 수있도록 정확하고 상세하게 요구사항을 설명하는 작업 === 코드 문제해결방안은 고려할때 컴퓨터의 입장에서 문제를 바라봐야한다. 인간의 생각으로는 x 걷는다는 행위를 로봇에게 입력시키기위해서는 아래처럼 프로세스가 필요하다. 프로그래밍 언어 인간이 사용하는 자연어가 아닌 컴퓨터가 사용하는 기계어로 명령을 전달해야한다. 하지만. 직접 기계어로 전달하기엔 너무 힘들고 복잡하기에 -> 인간이 이해할 수 있는 약속된 구문(Syntax, 문법)으로 구성된 “프로그래밍 언어(Programming Language)”를 사용하여 프로그램을 작성한 후 -> 기계어로 ..