언젠가는 펼쳐 볼 아카이브

Javascript 이론 공부 - 3 본문

IT/Javascript

Javascript 이론 공부 - 3

개발자희망생고롸파덕 2023. 8. 21. 15:50

1) 리터럴이란?

- 코드에서 값을 나타내는 법을 의미

ex) 템플릿 리터럴 : `${value}`;

 

2) 함수

/* 함수 종류 */
// 1. 함수 표현식
const name = function() { }

// 2. 함수 선언문
function name () { }

// 3. 화살표 함수
const name => () => { }

// 4. 생성자 함수
const object = new functon ();

- 어떤 언어이든 작은 "함수"는 작은 단위의 일들을 묶는 것이 좋음 (물론 매개 변수의 이름도 의미있게 지어야함)

- 함수의 이름은 함수코드가 있는 " 주소값"을 참조 하고 있음

- 함수에서 return을 명시적으로 하지 않으면 자동으로 undefined가 반환됨

    : "return;" 의 의미도 return undefined와 같음

- 함수의 매개변수 값은 무조건 undefined이고, 기본 값(default parameters)을 정할 수 있음

   : 매개변수의 정보는 함수 내부에서 접근이 가능한 arguments 객체에 저장됨

   : 기본값이 선언되어있을때, 함수 호출시 아무런 값이 없으면 기본값으로 들어감.

// 매개변수 기본값은 아래처럼 선언함
function(a = 123, b =234) { 
...
}

- 함수도 "객체"이기 때문에 변수로 할당&재할당이 가능

    - 함수는 "first-class object"임.

    - First-class object란? (참고 : https://ko.wikipedia.org/wiki/%EC%9D%BC%EA%B8%89_%EA%B0%9D%EC%B2%B4)

        : 모든 연산이 가능한 일반 객체

            > 매개변수로 전달 가능함

            > 함수의 반환 값이 될 수 있음

            > 할당 명령문( "=", "+=")이 가능함

            > 동일 비교 대상 가능

- 고차 함수(Higher-order function)

  : 인자로 함수를 받거나, 함수를 반환하는 함수 (함수 호출 기다려!)

  ex) 콜백 함수

// 콜백함수 예시
const add = (a, b) => a + b;
const multiply = (a, b) => a * b;

function cal(a, b, action) {
  if (a < 0 || b < 0) {
    return;
  }
  
  let result = action(a, b);
  
  return result;
}

cal(1, 2, add); // 콜백함수 형태로 함수 주소를 전달함

 

3) 클래스

- 객체를 생성할 수 있는 template

class hello { 
 constructor(my, name) {
   static WORLD = "Hello! World!";
   #name;
   
   this.#name = name;
   this.my = my;
 }
 
 get sayName() {
   console.log(`${WOLRD} ${this.#name}`);
 }
 
 static makeEmoji() {
   console.log("^ㅁ^");
 }
...

}

- 자바스크립트에는 priavate 키워드가 없는 대신, "#"을 사용

- 클래스로 생성한 객체는 인스턴스라고 부름

- 클래스 내부엔 인스턴스 레벨 속성과 클래스 레벨 속성이 있음

  - 인스턴스 레벨 속성 : 객체 생성시마다 모든 객체에 동일하게 다 들어있음

   - 클래스 레벨 속성 : 클래스에 딱 한번만 정의됨.

 

 

'IT > Javascript' 카테고리의 다른 글

Javascript 이론 공부 - 6  (0) 2023.09.06
Javascript 이론 공부 - 5  (0) 2023.08.30
Javascript 이론 공부 - 4 : Array  (1) 2023.08.24
Javascript 이론 공부 - 2  (0) 2023.08.16
Javascript 이론 공부 - 1  (0) 2023.08.14