목록코딩공부/Javascript (17)
개발세발
즉시 실행 함수 표현 Immediately Invoked Function Experssion : 정의되자마자 즉시 실행되는 자바스크립트 함수를 말한다 . (function () { // statements })(); 📍 크게 두 가지 괄호로 이루어져 있음 ◼ 괄호로 둘러싸인 익명함수 (Anonymous Function) - 함수 전체를 감싸고 있는 영역 - 전역 스코프에 불필요한 변수를 추가해서 오염시키는 것을 방지 - IIFE 내부 안으로 다른 변수들이 접근하는 것을 막을 수 있는 방법 - 표현 내부의 변수 또한 외부로부터의 접근이 불가능함 (function () { var aName = "John"; })(); aName // thorws "Uncaught RefenceError: aName is n..
spread : 기존의 객체[배열] 을 건들지 않고 새로운 객체[배열]을 만듦 const colors = ["red", "blue", "green", "yellow"]; const addColor = [...colors, "brown"] console.log(colors); console.log(addColor); rest : 객체, 배열, 함수의 파라미터에서 사용이 가능 - 객체, 배열에서 사용시에는 비구조화 할당 문법과 함께 사용 📍 객체 const dog = { name : "바둑이", color : "brown", age : 5 } const {color, ...rest} = dog console.log(color); console.log(rest); // brown // { name: '바둑이'..
binding : 코드의 어떤 식별자가 실제로 어떤 값을 가리키는지 결정하는 것 * lexical scope : 함수를 어디서 선언하였는지에 따라 상위 스코프를 결정하는 것 ➡️ 안쪽에서 바깥쪽 변수에 접근가능 (밖에서 안을 참조할 수는 없음) 자바스크립트에서의 binding은 lexical scope를 통해 이루어짐 var : block scoping의 대상이 아님 let, const : block scoping이 됨 스코프(가시성 visibility) : 프로그램의 현재 실행 중인 부분, 즉 실행 컨텍스트(execution context)에서 현재 보이고 접근할 수 있는 식별자 - 아직 선언하지 않은 변수, 함수가 종료되면서 존재하지 않게 된 변수는 스코프 안에 '있지 않다' ➡️ 있지 않다고 해서 ..
자바스크립트의 실행 모델 1️⃣ event loop 2️⃣ call stack 3️⃣ callback queue 1️⃣ event loop 자바스크립트의 이벤트 루프 모델은 여러 개의 스레드를 사용함 그 중 메인 스레드는 자바스크립트 코드가 실행되는 스레드를 말함 하나의 Node.js 프로세스에서 메인 스레드는 하나이며, 한 순간에 한 줄씩만 실행 (싱글 스레드) 워커(worker) 스레드는 여러개 있을 수 있음 (file I/O, network 등) ➡️ 웹 브라우저의 API 인 Web Workers를 사용하면 특정 작업을 백그라운드에 있는 다른 스레드에서 실행할 수 있음 즉, 멀티스레드 처리를 할 수 있음 따라서, 어떤 변수가 동시에 여러 실행 컨택스트에 의해 바뀌는 경우가 없다 . ➡️ 프로그램이 ..