자바스크립트

[Javascript] 자바스크립트 용어정리

포포015 2021. 1. 17. 12:07

함수란?

** 함수도 객체다! **(함수도 하나의 값처럼 취급된다 - 이러한 특징때문에 함수는 일급객체)

- 하나의 특별한 목적의 작업을 수행하기 위해, 독릭접으로 설계된 코드의 집합으로 정의가능

(자바의 메서드와 같은 기능)

 

CallBack 함수란?

자바스크립트는 함수표현식에서 함수이름을 꼭 붙이지 않아도되는 선택사항이다.(익명함수)

이러한 익명함수의 대표적용도가 바로 콜백함수 이다

콜백함수는 코드를 통해 명시적으로 호출하는 함수가 아니라, 개발자는 단지 함수를 등록하기만하고

어떤 이벤트가 발생했거나 특정 시점에 도달 했을때 시스템에서 호출되는 함수를 말한다.

(또한,특정 함수의 인자로 넘겨서 , 코드 내부에서 호출되는 함수 또한 콜백함수가 될수 있다)

 

1급객체란? 

-다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다.

 보통 함수에 매개변수로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원할 때 일급 객체임.

- 3가지 조건을 충족하면 1급 객체라고한다

 1. 변수나 데이터에 할당 할수 있어야함.

 2. 객체의 인자로 넘길수 있어야함.

 3. 객체의 리턴값으로 리턴할수 있어야함.

 

함수 호이스팅 이란?

함수를 방법은 크게 3가지가 있는데 , 

1) 함수 선언문

2) 함수 표현식

3) Function() 생성자 함수 (자주사용  X)

함수 선언문으로 생성하는경우 아래와 같이 선언할수 있는데, 함수 선언문 형태로 정의한 함수의 유효 범위는

코드의 맨처음부터 적용되서 ( 함수를 사용하기 전 반드시 선언해야한다는 규칙을 무시하므로 함수표현식사용 권장)

1
2
3
function add(x,y){
    return x+y;
}
cs

함수 표현식이란 (함수도 하나의 값처럼 취급되서) 함수도 숫자나 문자열처럼 변수에 할당하는것이 가능.

1
2
3
4
5
var add = function (x, y){
    return x + y;
}
 
console.log(add(3,4)); //출력값 7
cs

 

프로토타입이란?

- 자바스크립트는 프로토타입 기반 언어라고 불립니다.

(프로토 타입이 거의 자바스크립트 그자체 이기때문에 이해하는것이 복잡하다)

 Prototype vs Class

클래스 라는것을 한번쯤은 봤을것이다. 객체지향 언어인 java,python,Ruby 등 같은언어에서 빠질수 없는개념이다

근데 자바스크립트에는 클래스라는 개념이없다. 대신 프로토타입(Prototype)이라는 것이 존재한다.

클래스가 없으니 기본적으로 상속기능 X . 그래서 보통 프로토타입을 기반으로 상속을 흉내내도록 구현해 사용함.

아래와 같이 Person.prototype이라는 빈 Object가 어딘가에 존재하고, Person 함수로 부터 생성된 객체(kim,lee)들은

어딘가에 존재하는 Object에 들어 있는 값을 모두 갖다 사용 가능

즉, eyes,nose,mouth를 어딘가에 있는 빈 공간에 넣어 놓고 kim과 lee가 공유해서 사용하는것.

참고 : medium.com/@bluesh55/javascript-prototype-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-f8e67c286b67

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function Person() {}
Person.prototype.eyes = 2;
Person.prototype.nose = 1;
Person.prototype.mouth = 1;
 
var kim  = new Person();
var lee = new Person():
 
console.log(kim.eyes); // => 2
console.log(kim.nose); // => 1
console.log(kim.mouth); // => 1
 
 
 
cs

 

스코프란?

Scope를 우리말로 번역하면 ‘범위’라는 뜻을 가지고 있습니다. 즉, 스코프(Scope)란 ‘변수에 접근할 수 있는 범위’

자바스크립트에선 스코프는 2가지 타입이 있습니다. 바로 global(전역)과 local(지역) 인데요.

전역 스코프(Global Scope)는 말 그대로 전역에 선언되어있어 어느 곳에서든지 해당 변수에 접근할 수 있다는 의미이고 지역 스코프(Local Scope)는 해당 지역에서만 접근할 수 있어 지역을 벗어난 곳에선 접근할 수 없다는 의미

 

 

모듈화란?

- 모듈은 관련된 기능을 하나로 묶어 다른 코드와 결합도를 줄이고, 재사용성을 높이기 위해 사용된다.

 

프로토타입 체인 이란?

- 특정 객체의 메서드나 프로퍼티에 접근하고자할 때, 해당 객체에 접근하려고 하는 프로퍼티나 객체가 없다면 프로토타입 링크([[Prototype]] 프로퍼티)를 따라 자신의 부모 역할을 하는 프로토타입 객체를 차례로 검색한다. 이를 프로토타입 체인이라 한다.

참고: velog.io/@codelog/JavaScript-Prototype-Chain

 

JavaScript Prototype Chain

Prototype Chain이란? 일반적으로 프로토타입(prototype)이란 시제품, 견본 등과 같은 의미로 일반적으로 원형이라는 뜻을 가진다. 질문은 "C++, JAVA 에서 Class 란 무엇인가?" 와 같은 맥락이라고 볼 수 있

velog.io

 

 

 

클로저란?

클로저는 독립적인 (자유) 변수를 가리키는 함수이다. 또는, 클로저 안에 정의된 함수는 만들어진 환경을 ‘기억한다’.

흔히 함수 내에서 함수를 정의하고 사용하면 클로저라고 한다. 하지만 대개는 정의한 함수를 리턴하고 사용은 바깥에서 하게된다. 

참조: hyunseob.github.io/2016/08/30/javascript-closure/