개발 관련 학습정리(62)
-
자바스크립트에서의 this는 무엇일까?
일반함수, 화살표함수에서의 this 자바스크립트의 this는 현재 실행 문맥을 뜻하며 일반함수(내부함수)와 화살표 함수인가에 따라 this가 가르키는 객체가 다르다. 내부함수의 경우 어디에서 선언되었든지 전역 객체를 가리키고, 일반함수도 window(전역)을 가리킨다. 반면에 화살표 함수의 this는 항상 상위스코프의 객체를 가리킨다. Apply, Call, Bind 3가지 모두 this를 바인딩하기 위한 방법이다. Apply - this를 바인딩하면서 함수를 호출하는 방법으로 두번째 인자가 배열이다. Call - this를 바인딩하면서 함수를 호출하지만 apply와 다르게 하나씩 넘긴다. Bind - 함수를 호출하지 않고 바인딩된 새 함수를 리턴한다.
2020.11.25 -
호이스팅(Hoisting)과 클로저(Closure)
호이스팅 변수를 선언하고 초기화 했을때 선언 부분이 최상단으로 끌어올려지는 현상으로 변수 및 함수 선언부가 스코프 내 제일 윗쪽으로 올라가게 된다. 함수 표현식/함수 선언식은 호이스팅이 적용되지만 let/const와 같은 변수는 호이스팅이 발생하지 않는다. 우선순위는 변수가 함수 선언보다 위로 끌어올려지며 코드의 가독성을 위하여 호이스팅을 최소화 하는 것이 좋다. 함수와 변수를 가급적 코드 상단부에 선언함으로 해결할 수 있다. 클로저 내부함수가 자신이 선언된 자리의 스코프를 기억하여 자신이 선언되었을때 그 스코프 환경에 접근할 수 있는 함수 내부함수로서 자신이 생성될때의 환경을 기억하는 함수이다. 쓰는 이유는 대표적으로 세가지이다. 1. 현재 상태를 기억하고 최신 상태로 유지하기 위하여 2. 전역 변수 ..
2020.11.25 -
비동기 프로그래밍(AJAX, Callback, Promise, Async/Await)
AJAX Asynchronous JavaScript and XML의 약자로, 자바스크립트를 통해 비동기적으로 데이터를 교환하는 방식이다. 보통 데이터가 변경되면 서버로 부터 웹페이지 전체가 반환되어야 하지만 AJAX를 사용하면 페이지 일부만을 갱신하여 동일한 효과를 낼 수 있다. 이러한 이유 덕분에 주로 사용되며 빠르고 부드러운 화면 효과를 기대할 수 있다. Callback 함수 function getData(callbackFunc) { $.get('https://domain.com/products/1', function(response) { callbackFunc(response); // 서버에서 받은 데이터 response를 callbackFunc() 함수에 넘겨줌 }); } getData(funct..
2020.11.23 -
브라우저 렌더링 과정 / Http와 Https 통신 방식의 차이
간단한 브라우저 렌더링 과정 1. 주소창에 검색한 도메인으로 서버를 찾아간다. 2. DNS가 연결해줄 곳을 찾아준다. 3. 기본설정파일 (index)을 클라이언트로 보낸다. 4. 한줄한줄 읽어가며 DOM트리를 생성한다. 4-1. 중간에 css요청이 발생하면 응답과정이 끝나고 css를 파싱함 4-2. 중간에 javascript요청이 발생하면 제어권한을 js엔진에 넘기고 javascript를 먼저 파싱한다. 5. 완성된 DOM트리와 CSSOM트리를 합쳐 Render Tree를 만들어 그려낸다. http와 https의 차이점 보안 : http는 네트워크상에서 정보를 누군가가 열람과 수정이 가능하지만 https는 누가 볼수없도록 막혀져있다. 속도 : http방식이 https보다 빠르다. 비용 : https는 따..
2020.11.23 -
객체 지향 프로그래밍과 함수형 프로그래밍
객체 지향 프로그래밍 (Object Oriented Programming) 줄여서 OOP라고 주로 부르며 크게 4가지 특징을 가지고 있다. 1. 캡슐화(Encapsulation)캡슐화는 데이터, 그리고 데이터를 처리하는 함수를 하나로 묶은것을 말합니다.캡슐화된 객체들은 재사용이 가능하며, 세부 내용이 은폐(정보 은닉)되어 오류가 적습니다.덕분에 인터페이스가 단순해지고, 객체간의 결합도가 낮아집니다. 2. 정보은닉(Information Hiding)다른 객체에게 자신의 정보를 숨기고 공개된 명령만을 통하여 접근을 허용하는 방식입니다.외부 객체가 특정 객체의 데이터와 함수를 직접 접근하지 않기 때문에 유지보수를 하거나소프트웨어를 확장할 때 오류를 줄일 수 있습니다. 3. 추상화(Abstraction)불필요한..
2020.11.23 -
[Cortex-M3] CMSIS 라이브러리 - 1 (RCC / NVIC / GPIO)
STM32사에서 만든 ARM을 위한 라이브러리 CMSIS라이브러리를 알아보자. 1. 먼저 clock을 제공하는 RCC 라이브러리 구조이다. 이와 같이 RCC_ABP(1/2)Periph_(name)이 주소로 define 되어있고, RCC_APB1PeriphClockCmd()함수에 아까의 주소, ENABLE/DISABLE이 인자로 들어간다. 이 함수를 설정하면 RCC->APB(1/2)ENR 레지스터를 설정할 수 있다. 이를 통해 원하는 Peripheral에 clock을 손쉽게 제공할 수 있다. 2. NVIC 라이브러리 NVIC를 설정하는 NVIC_init의 구조는 다음과 같이 생겼다. IRQChannel은 IRQ채널을 결정하고, NVIC_IRQChannelPreemptionPriority 는 첫번째 우선순위..
2019.11.19