[2주차] JavaScript - 함수와 객체

minLuna·2023년 3월 11일
0

엘리스 AI트랙 7기

목록 보기
12/62

본 자료는 박규하 코치님과 Elice 플랫폼의 자료를 사용하여 정리하였습니다.

함수

함수란?

  • 작업을 수행하거나 값을 계산하는 명령문의 집합

선언문과 표현식

함수 선언문

function function_name(parameter1, parameter2, ...) {
    실행 코드
}

함수 표현식

let function_name = function(parameter) {
    실행 코드
}
  • let 또는 const 키워드로 변수선언, 그 변수에 익명함수 할당
  • 함수 표현식은 변수에 할당되기 때문에 값으로 취급
  • 다른 값처럼 인자로 전달하거나 반환할 수 있다.

선언문과 표현식의 차이점

  • 가장 큰 차이는 호이스팅( 자바스크립트 엔진이 코드를 해석할 때 선언된 변수나 함수를 코드 상단으로 끌어올리는 현상 )
  • 함수 선언문은 미리 호출 가능
  • 함수 표현식은 미리 호출 불가능

함수와 객체

  • 무명의 리터널로 생성가능
  • 변수나 자료구조에 저장할 수 있다.
    • const arr = [add, function(c){return c*c;} ];
  • 함수의 인자로 전달할 수 있다.
  • 함수의 반환값으로 사용할 수 있다.

스코프

  • 변수에 접근할 수 있는 범위

함수 스코프

  • 함수 내에서 정의된 변수는 해당 함수내에서만 사용
  • 전역변수와 지역변수
  • var

블록 스코프

  • 중괄호안에서 정의된 변수는 해당 영역내에서만 사용
  • if나 for안에서 선언한 변수
  • let, const

클로저

  • 함수와 함수가 선언된 어휘적 환경의 조합
function makeCounter() {
    let count = 0;    // 지역변수
    return function() {    // 클로저 (count를 기억함)
        return ++count;
    };
}

고차함수

  • 함수를 인자로 받거나 반환하는 함수
  • 함수를 활용하여 추상화하거나 재사용할 수 있다.
function addWithFunc(a, b, func) {
    const sum = a + b;
    return func(sum);
}
addWithFunc(1, 2, console.log) {
     =>function addWithFunc(1, 2, console.log) {
              const sum = 1 + 2;
              return console.log(sum);
          }
function sumForN(n) {
    return function(a){
        return n + a;
    }
}
let sumForFive = sumForN(5)
sumForFive(1);
     =>sumForN(5) {
              return function(1){
                  return 5 + 1;
              }
          }

...params

  • ...이라는 연산자를 이용하여 객체에 속한 값만 가져온다.
profile
열심히

0개의 댓글