본문 바로가기
Javascript

[자바스크립트] 함수

by hunbal 2023. 2. 2.
SMALL

  함수

  - 자주 쓰는 실행코드를 블록단위로 묶어놓은것
  - 기능단위로 재사용하기 위해서...
  - 선언하기는 function키워드 사용하거나 arrow function
  - 호출 : 정의되어있는 함수는 호출해야 비로소 기능이 실행됨

  함수의 종류

  1.선언적 함수 : 이름을 붙여서 정의한 함수
  - 자바스크립트를 읽을 때 우선적으로 읽어줌
  - 호출 위치가 자유롭다

  hap();
      function hap() {
        console.log("선언적 함수");
      }


  2.익명 함수 : 이름없이 정의한 함수 - 콜백함수 - 중요 - Event
  - 자체로 호출 불가
  - 변수에 익명함수를 대입하거나 특정 이벤트 객체에 대입해서 호출

 

 


  3.대입형 함수 : 변수에 익명함수가 대입된 형태 - *일급함수*고차함수

더보기

일급 함수

함수를 다른 변수와 동일하게 다루는 언어는 일급 함수를 가졌다고 표현합니다. 예를 들어, 일급 함수를 가진 언어에서는 함수를 다른 함수에 인수로 제공하거나, 함수가 함수를 반환할 수 있으며, 변수에도 할당할 수 있습니다.

      function sayHello() {
        return "Hello, ";
      }
      function greeting(helloMessage, name) {
        console.log(helloMessage() + name);
      }
      // `sayHello`를 `greeting` 함수에 인자로 전달
      greeting(sayHello, "JavaScript!");
  

고차 함수

함수를 반환하는 함수를 고차 함수라고 부릅니다.
  - 리액트 리덕스 컨셉을 재현할 때 필요
  - 구독발행 모델 구현해 볼 때
  - 커리함수
 
      function sayHello() {
        return function () {
          console.log("Hello~");
        };
      }
      const myFunc = sayHello();
      myFunc();
const minus = function (a, b) {
        const num1 = 2;
        const num2 = 1;
        document.write(num1 + num2);
        document.write("<br/>");
        document.write(a + b);
      };
      minus(5, 8);


  4.즉시실행함수 : 함수가 자기자신을 정의하자마자 바로 자신 호출함

  (function (x) {
        //실행부 - 변수 선언(var -> parcel 설정 -> let, const)
        //제어문, 로직
        //document는 즉시실행함수.html문서 전체를 받는 내장객체
        //내장객체란 브라우저 안에 정의되어 있어서
        //필요시 생성없이 브라우저로부터 객체 주입이 됨
        // const MyCar = new Sonata()
        document.write("test" + x);
      })(50000);

 

더보기
  즉시 실행함수
 
  :호이스팅 이슈 해결하는 방법
  :특정 원치않는 공간으로 그 값이 빠져나가지 못하게 할 때
  :즉시실행함수 안쪽의 값들을 캡슐화할 때 사용
 
  괄호 2개
  -첫째 함수의 정의 부분
  -두번째 함수 호출하는 괄호

 

 [Arrow Function]

: 기존의 익명함수를 좀 더 쓰기 쉽게 축약한 형태임
: 내부로 전달되는 파라미터가 하나면 괄호는 생략 가능함

 

 

자바스크립트는 같은 이름의 함수를 중복정의 X → 자바와의 차이
why? 메소드 오버로딩이 없기 때문!

결론 : 함수의 이름은 무조건 다르게 작명함.

 

'Javascript' 카테고리의 다른 글

eval 함수  (0) 2023.10.17
[자바스크립트] 즉시실행함수  (0) 2023.02.01
[자바스크립트] 호이스팅  (0) 2023.02.01
[자바스크립트] 프로토타입  (0) 2023.02.01
[자바스크립트] 변수  (0) 2023.02.01

댓글