본문 바로가기

WEB

(47)
[JS] 함수를 호출하는 call / apply / bind 차이점 함수 호출을 하는 방법은 함수의 이름 옆에()을 붙이는 방법으로 널리 쓰이고 있다. 자주 사용되진 않지만 함수를 호출하는 방법은 그 밖에 call, apply라는 함수를 사용하여 호출할 수 있다. function foo(a, b, c) { console.log(a + b + c); }; foo(1, 2, 3); // 6 foo.call(null, 1, 2, 3); // 6 foo.apply(null, [1, 2, 3]); // 6 1. Function.prototype.call() 두 개의 매개변수를 받는 함수이다. MDN에 따르면 아래와 같은 인자를 넘겨주어야 한다. thisArg: func 호출에 제공되는 this의 값 arg1, arg2, ...: func이 호출되어야 하는 인수 간단하게 말해 첫번..
웹 표준과 접근성 월드 와이드 웹에서 공식적으로 정한 웹의 표준이다. 웹 사이트를 개발한다면 꼭 지켜야하는 사항이기도 하다. 어떤 운영체제나 브라우저를 사용하더라도 웹페이지가 동일하게 보이고 정상 작동해야함을 의미. 표준화 단체인 W3C가 권고한 표준안에 따라 웹사이트를 작성할 때 이용하는 HTML, CSS, JavaScript 등에 대한 규정이 담겨 있다. ※ 웹 표준의 장점 개발 및 운영의 효율성 제고. 즉 소스의 통일화로 수정 및 운영관리가 용이하다. 다양한 브라우저, 휴대폰 PDA, 장애인 지원용 프로그램에서도 대응이 가능하므로 접근성이 향상 되고, 장애인, 고령자 등을 포함한 사용자층도 확대 가능하다. 논리적이고 효율적으로 작성된 웹 문서는 코드의 양이 줄어 파일 크기가 줄고 서버부담의 감소로 이어질 수 있다. ..
[JS] 이벤트 버블링과 캡처링 중첩된 엘리먼트들 중 어느 한 요소에 이벤트 핸들러를 등록하면 중첩된 엘리먼트들 모두 전파되는 현상을 말한다. 이런 현상을 HTML DOM API의 이벤트 전파(Event Propagation)라 말하고 두 가지 방식으로 구분된다. 이벤트 버블링 : 이벤트가 발생한 요소부터 window 까지 이벤트를 전파한다.(👆) 이벤트 캡처링 : window 로부터 이벤트가 발생한 요소까지 이벤트를 전파한다.(👇) 둘의 차이는 방향에 있다. 상위 계층요소에서 하위로 간다면 이벤트 캡처링 그 반대인 하위 요소에서 상위 계층요소로 전파된다면 그것을 이벤트 버블링이라고 말한다. 이벤트 버블링 var divs = document.querySelectorAll('div'); divs.forEach(function(div) {..
[JS] 이벤트 루프(Event Loop) 이미지 좌측에 JavaSciprt Engine에 관한 Memory Heap, Call Stack에 관한 내용은 해당 게시글을 참조하면 된다. WEB APIs 이미지 우측에 Web APIs는 JS로 묶은 것 밖에 있다. JS 엔진에 대한 것이 아니라는 것을 의미한다., Web API는브라우저에서 제공하는 API로, DOM, Ajax, Timeout 등이 있다. Call Stack에서 실행된 비동기 함수는 Web API를 호출하고, Web API는 콜백 함수를 Callback Queue에 밀어 넣는다. Callback Queue 비동기적으로 실행된 콜백 함수가 보관되는 영역이다. JavaScript로 작성된 함수들의 호출이나 선언이 Memory Heap에 저장된다는 것이 차이점이다. 예를 들어 setTime..
Cors란 무엇인가? CORS(Cross-Origin Resource Sharing)는 교차 출처 리소스 공유라는 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제이다. 즉, 무분별하게 클라이언트가 다른 리소스에 접근하는 것을 막는 보안 이슈이다. 예를들어 클라이언트가 3000포트이고 서버가 5000포트라면 클라이언트가 서버에 접근하면 연결을 차단한다. 이유는 포트가 달라서이고 도메인이 달라도 안돼고 아이피가 달라도 안됀다. 다시말해서 처음 리소스를 요청했던 그 주소가 아니라면 차단해버린다는 것이다. 하지만 프론트엔드를 개발하다가 서버에 요청을 보낼때 아래와 같은 오류가 console에 찍히는 경험을 해보았을 것이다. Access to XMLHttpRequest..
[JS] 자바스크립트 동작원리 컴퓨터는 이진코드(0, 1)두개의 값만 알아들을 수 있다. 하지만 우리가 작성하는 자바스크립트는 0, 1이 아닌 영어에 가깝고 영어를 알고있다면 배우지 못한 사람도 대충은 알아볼 수 있고 배운다면 영어로 코딩 또한 가능하다. 그렇다면 컴퓨터는 어떻게 우리가 영어로 작성한 자바스크립트 코드를 알아들을 수 있는지 알아보자. 자바스크립트의 엔진 자바스크립트 코드를 동작시키는 장치를 엔진이라고 말한다. 현재 사용되는 엔진은 대부분 Google에서 C++로 작성된 V8엔진을 사용하며 Chrome과 Node.js에서도 해당 엔진을 사용한다. 개발자가 작성한 자바스크립트 코드는 V8엔진에 의해서 컴퓨터가 알아들을 수 있는 언어로 변환된다. 그럼 어떻게 변화되는지 알아보자. 자바스크립트(V8) 엔진구조 자바스크립트 엔..
[JS] 메모리 힙과 콜스택 자바스크립트 엔진이 구동되면서 코드를 읽고 실행하는 과정에서 아주 중요한 두가지 단계가 있는데. 정보(ex. 변수, 함수 등)를 특정한 장소에 저장하는 것 실제 실행되고 있는 코드를 트래킹하는 작업(실행 컨텍스트) Memory Heap 메모리 힙(Memory Heap)은 변수, 함수 저장, 호출 등의 작업이 발생하여 아래 내용들이 진행되는 공간이다. 어느 언어든지 메모리 생명주기는 비슷하다. 위 이미지로 예를 들자면 자바스크립트 코드에서 var num = 20; 이라는 구문이 있을때 "박스하나를 주고 그 박스에 num이라는 라벨을 붙이고 20을 넣어줘" 같은 말이다. 필요할때 할당한다. (allocate, 할당) 사용한다. (읽기, 쓰기) (use, 사용) 필요없어지면 해제한다. (release, 해제)..
[JS]실행 컨텍스트(Execution Context) 실행 컨텍스트(Execution Context)란 자바스크립트 코드가 scope, hoisting, this, function, closure 등의 동작원리를 담고 실행되는 환경을 말한다. 자바스크립트 코드가 실행되는 순간 전역 컨텍스트가 Stack에 쌓이게 되고 다른 함수가 호출될때마다 쌓이게 되는 구조라고 생각하면된다. 컨텍스트의 원칙 4가지가 있다. 먼저 전역 컨텍스트 하나 생성 후, 함수 호출 시마다 컨텍스트가 생긴다. 컨텍스트 생성 시 컨텍스트 안에 변수객체(arguments, variable), scope chain, this가 생성된다. 컨텍스트 생성 후 함수가 실행되는데, 사용되는 변수들은 변수 객체 안에서 값을 찾고, 없다면 스코프 체인을 따라 올라가며 찾는다. 함수 실행이 마무리되면 해..