본문 바로가기

카테고리 없음

2021년 12월 15일 개발일지

자바스크립트 코어 공부 

 

즉시실행 함수 (IIFE) 

함수 정의와 동시에 즉시 호출되는 함수를 즉시 실행 함수라고 합니다 . 즉시실행 함수는 단 한번만 호출되며 다시 호출할수 없습니다 .

 

(function(){

  var a =3;

  var b =5;

  return a * b;

}());

 

즉시 실행 함수는 함수 이름이 없는 익명 함수를 사용하는것이 일반적입니다 .

함수 이름이 있는 기명 즉시실행 함수도 사용할수 있지만 , 즉시실행함수를 다시 호출할수는 없습니다 .

즉시 실행 함수는 반드시 그룹 연산자(...)로 감싸야 합니다 .그렇지않으면 에러가 발생합니다 .

 

콜백 함수

함수의 매개변수를 통해 다른 함수의 내부로 전달되는 함수 

 

고차 함수

매개 변수를 통해 함수의 외부에서 콜백 함수를 전달받은 함수

콜백 함수는 고차 함수에 의해 호출

 

스코프

스코프란 ?

스코프(유효범위)는 자바스크립트를 포함한 모든 프로그래밍 언어의 기본적이며 중요한 개념입니다 .

모든 식별자 (변수이름 ,함수이름 , 클래스이름 등) 는

자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정됩니다.

이 유효 범위를 스코프라고 합니다 . 

 

var x = 'global;'

function foo() {

 var x ='local'

 console.log(x); 1

}

foo();

console.log(x);  2 

 

코드의 가장 바깥 영역과 foo 함수 내부에 같은 이름을 갖는 x 변수를 선언했고 1 , 2 에서 x 변수를 참조합니다 .

이때 자바스크립트 엔진은 이름이 같은 두개의 변수 중에서 어떤 변수를 참조해야 할 것일지를 결정해야 합니다 .

이를 식별자 결정 이라고 합니다 .

자바스크립트 엔진은 스코프를 통해 어떤 변수를 참조해야 할것인지 결정합니다 .

따라서 스코프란 자바스크립트 엔진이 식별자를 검색할대 사용하는 규칙이라고 생각 할 수 있습니다 .

 

위 코드에서 코드의 가장 바깥 영역에 선언된 x 변수는 어디서든 참조할수 있습니다 .

하지만 foo 함수 내부에서 선언된 x 변수는 foo 함수 내부에서만 참조할 수 있고 foo 함수 외부에서는 참조할 수 없습니다 .

이때 두개의 x 변수는 식별자 이름이 동일하지만 스코프가 다른 별개의 변수입니다 .

만약 스코프라는 개념이 없다면 같은 이름을 갖는 변수를 충돌을 일으키므로 프로그래밍 전체에서 하나밖에 사용할 수 없습니다 .

스코프(유효범위를)통해서 식별자인 변수 이름의 충돌을 방지하여 같은 이름의 변수를 사용할 수 있게 합니다 .

 

 

코드의 문맥과 환경

코드가 어디서 실행되며 주변에 어떤 코드가 있는지를 렉시컬 환경 이라고 합니다.

코드의 문맥은 렉시컬 환경에서 이루어집니다 .

이를 구현한것이 실행 컨텍스트(execution context) 이며 , 모든 코드는 실행 컨텍스트에서 평가되고 실행됩니다 .

스코프는 실행 컨텍스트와 깊은 관련이 있습니다 .

 

스코프의 종류

코드는 전역(global)과 지역(local)으로 구분할 수 있습니다 .

 

전역 :

코드의 가장 바깥영역 ,

스코프 : 전역 스코프

변수 : 전역변수

 

지역 :

함수 몸체 내부,

스코프: 지역 스코프

변수 : 지역변수

 

전역 변수는 어디서든지 참조할수 있습니다 .

 

지역과 지역 스코프

지역이란 함수 몸체 내부를 말합니다 .

지역 변수는 자신의 지역 스코프와 하위 지역 스코프에서 유효하다.