함수 심화-01

이서림·2024년 7월 30일

JavaScript

목록 보기
20/28

구조분해할당을 이용한 아규먼트 처리

  • 구조분해 할당을 통해 함수에 전달할 인자의 기본값을 지정할 수 있음,
    function printMe({ name, age, email } = {}) {
      console.log(`이름: ${name}, 나이: ${age}, 이메일: ${email}`);
    }
    

    const me = {
    name: '재현',
    age: 25,
    email: 'jaehyun@something.com'
    };

    printMe(me);

    • 위에서 빈객체를 할당하지 않고 printMe()를 실행한다면 어떻게 될까?:

rest문법

  • 함수의 매개변수에 ...를 붙이면 사용자가 제공한 모든 매개변수를 배열안에 넣도록 지정.
  • rest문법 사용시 주의할 점
    • 매개변수에는 하나의rest만 존재 가능
    • rest는 반드시 함수 정의의 마지막 매개변수
function 함수2(a, b, ...c){
    console.log(c)
    return Math.max(...c)
}

함수2('hello', 'world', 10, 20, 30, 40)

function 함수2([a, b], ...c){
console.log(a)
console.log(b)
console.log(c)
}

함수2([1, 2], 10, 20, 30, 40)

  • 자바스크립트 엔진은 일반적인 객체나 배열안에서 사용되는 은 spread, 함수의 마지막 매개변수에 사용되는 은 rest 문법으로 인식

매개변수의 초기화

function 함수3(a=10, b=20, c=30){
    return a + b + c
}

console.log(함수3())
console.log(함수3(100))
console.log(함수3(100, 200))
console.log(함수3(100, 200, 300))

console.log(함수3(c=1000)) // 1030이 되어야 하는거 아니에요?
// 1050

console.log(함수3(c=1000, a=2000)) // 3020이 되어야 하는거 아니에요?
// 3030

// 값이 순서대로 들어갔습니다.

자바스크립트 Scope

  • 변수의 접근성과 생존 기간을 제어하는 ‘생존 범위’.
const func1 = function(){
  var a = 1;
	var b = 2;
  
  console.log(a + b);
};

var a = 20;

func1();

스코프의 종류

  1. 전역 스코프
    • 스크립트의 어디서든 접근이 가능하기 때문에 사용이 쉬움.
    • 타인과의 협업, 라이브러리 사용시 충돌 가능성.
  2. 함수 스코프
    • 함수 내부에서 정의된 변수와 매개변수는 함수 외부에서 접근X.
    • 함수 내부에서 정의된 변수라면 함수의 어느 부분에서도 접근 가능.
  3. 블록 스코프 (ES6)
    • 중괄호 안에서만 접근 가능.
    • 블록 내부에 정의된 변수는 블록의 실행이 끝나면 해제.
profile
꾸준한 열정으로 나아가는 프론트엔드 개발자

0개의 댓글