TIL-32 자바스크립트 완벽 가이드 8장 함수

khundi·2022년 7월 6일
0
post-thumbnail

자바스크립트 완벽 가이드

8장 함수

함수 선언 방법 3가지

  • 함수 선언식
    function a () {}

  • 함수 표현식
    const a = function () {}

  • 화살표 함수
    const a = () => {}
    함수 바디가 return문 하나라면 return 키워드와 중괄호를 모두 생략할 수 있다.
    const sum = (x, y) => x + y;
    매개변수도 하나라면 매개변수를 감싸는 괄호도 생략이 가능하다.
    const sum = x => x + x;

중첩된 함수

자바스크립트에서는 다른 함수 안에 함수를 중첩할 수 있다.

function hypotenuse(a, b) {
	function square(x) { return x*x; }
    return Math.sqrt(square(a) + square(b));
}

함수 호출 방법 5가지

  • 함수로 호출
    a(), a(x, y)
  • 메서드로 호출
    o.m(), o.m(x, y)
    • this를 통해 자기가 속한 객체를 참조할 수 있다.
  • 생성자로 호출
    new Object(), new Object;
  • call(), apply() 메서드를 통해 간접적으로 호출
  • 자바스크립트 언어 기능을 통한 묵시적 호출

즉시 호출하는 함수 표현식(IIFE)

(function() {
	// 코드코드코드...
}()); // 함수 리터럴을 종료하고 즉시 호출한다.

function 앞에 있는 여는 괄호가 없다면 자바스크립트 인터프리터가 함수 선언으로 분석하기 때문에 반드시 필요하다.

어휘적 스코프(lexical scope)

어휘적 스코프란 함수가 호출 시점의 스코프가 아니라 자신이 정의된 시점의 변수 스코프를 사용하여 실행된다는 뜻.

Predicate

argument를 받아 boolean 값을 반환하는 함수형 인터페이스.

함수 프로퍼티

length 프로퍼티

함수에서도 length 프로퍼티가 있다.
정의된 매개변수 개수이며 보통 함수가 예상하는 인자 개수이다. 함수에 나머지 매개변수가 있다면 그 매개변수는 이 length 프로퍼티에 포함되지 않는다.

name 프로퍼티

함수가 정의될 때 이름이 있었다면 그 이름, 또는 익명의 함수 표현식이라면 처음 생성됐을 때 할당된 변수나 프로퍼티 이름이다. 이 프로퍼티는 디버깅이나 에러 메세지에 유용하게 사용된다.

profile
안녕하세요. 웹 프론트엔드 개발자 전성훈입니다.

0개의 댓글