01. 선언적 함수

함수를 만드는 일반적인 방식이다.

{
    function func(){
        document.write("함수가 실행되었습니다. 01번"); // 브라우저 객체
    }
    func(); // 마지막에 한번 더 func()로 감싸줘야 실행이 된다.
}
결과보기
함수가 실행되었습니다. 01번

02. 익명 함수

함수명 대신 변수명에 함수코드를 저장하는 방식입니다.

{
    const func = function(){ // 변수 이름(func) 을 쓰고 있어 익명 함수라 칭한다. 
        document.write("함수가 실행되었습니다. 02번");
    }
    func(); 
}
결과보기
함수가 실행되었습니다. 02번

03. 매개변수 함수

함수를 호출할 때 인수로 전달된 값을 함수 내부에서 사용할 수 있게 해주는 변수입니다.
또한, 함수의 인수(argument)란 함수가 호출될 때 함수로 값을 전달해주는 변수를 가리킵니다.

{
    function func(str){ // (str)을 매개 변수라 칭한다.
        document.write(str);
    }
    func("함수가 실행되었습니다. 03번");
}
결과보기
함수가 실행되었습니다. 03번

04. 리턴값 함수

리턴값이란 함수가 어떠한 기능을 수행하고 그 결과를 호출한 곳으로 돌려주는 값을 말합니다.
함수가 어떠한 기능을 수행하고 돌려줄 값이 있으면 return 명령을 사용합니다.

{
    function func(){
        const str = "함수가 실행되었습니다. 04번 
"; return str; // 실행문은 아니지만 결과값으로 저장은 되어있다. } document.write(func()); // 리턴값 함수에서는 도큐멘트 안에 함수 실행문이 들어간다. [리턴값이 있기에 실행이 될 수 있는 것] }
결과보기
함수가 실행되었습니다. 04번

05. 화살표 함수 : 선언적 함수

기본 함수 표현을 좀 더 간단하게 표현 해줄 수 있는 함수이다.

{
    //  func = () => { //function을 없애고 func = () => 만 넣어준다.
    //     document.write("함수가 실행되었습니다. 05번");
    // }
    // func();

    func = () => document.write("함수가 실행되었습니다. 05번"); // {}를 지우고 한 줄로 줄일 수 있다.

    func();
}
결과보기
함수가 실행되었습니다. 05번

06. 화살표 함수 : 익명 함수

{
    // 익명 함수를 화살표 함수로 바꾼 경우
    // const func = () => {
    //     document.write("함수가 실행되었습니다. 06번");
    // }
    // func();

    const func = () => document.write("함수가 실행되었습니다. 06번");

    func();
}
결과보기
함수가 실행되었습니다. 06번

07. 화살표 함수 : 매개변수 함수

{
    // function func(str){
    //     document.write(str);
    // }
    // func("함수가 실행되었습니다. 07번");

    // 매개변수 함수를 화살표 함수로 바꾼 경우
    // func = (str) => {
    //     document.write(str);
    // }
    // func("함수가 실행되었습니다. 07번");

    // func = (str) => document.write(str);
     func = str => document.write(str); // ()를 빼고 한번 더 줄일 수 있다.

    func("함수가 실행되었습니다. 07번");
}
결과보기
함수가 실행되었습니다. 07번

08. 화살표 함수 : 리턴값 함수

{
    // function func(){
    //     const str = "함수가 실행되었습니다. 08번";
    //     return str;
    // }
    // document.write(func());

    func = () => {
        const str = "함수가 실행되었습니다. 08번";
        return str;
    }
    document.write(func());
}
결과보기
함수가 실행되었습니다. 08번

09. 화살표 함수 : 익명 함수 + 매개변수 + 리턴값

화살표 함수를 이용해 익명 함수, 매개변수 함수, 리턴값 함수를 복합적으로 사용

{
    const func = (str) => { // const : 익명함수 시작 , (str) : 매개변수
        return str; // 리턴값 함수
    }

    document.write(func("함수가 실행되었습니다 09")); //리턴값 함수
}
결과보기
함수가 실행되었습니다. 09번

10. 화살표 함수 : 익명 함수 + 매개변수 + 리턴값 + 괄호 생략

09번 문제에서 괄호까지 생략

{
    const func = str => { // str ()괄호 생략
        return str; 
    }

    document.write(func("함수가 실행되었습니다 10"));
}
결과보기
함수가 실행되었습니다. 10번

11. 화살표 함수 : 익명 함수 + 매개변수 + 리턴값 + 괄호 생략 + 리턴 생략

09번 문제에서 괄호, 리턴 까지 생략

{
    const func = str => str; // str ()괄호 생략, 리턴 생략

    document.write(func("함수가 실행되었습니다 11"));
}
결과보기
함수가 실행되었습니다. 11번

11. 화살표 함수 : 익명 함수 + 매개변수 + 리턴값 + 괄호 생략 + 리턴 생략

09번 문제에서 괄호, 리턴 까지 생략

{
    func = str => str; // str ()괄호 생략, 리턴생략, const 생략

    document.write(func("함수가 실행되었습니다 12"));
}
결과보기
함수가 실행되었습니다. 12번

13. 함수 유형 : 함수와 매개변수를 이용한 형태

function func(num, str1, str2) { // 함수의 특징 : 함수는 실행문이다.(실행문의 집합체) | 소스 재활용 목적
    document.write(num + str1 + str2 + " 01 " + "
"); }; func("1. ", "함수", "실행"); // (num, str1 , str2) 에 해당 func("2. ", "자바스크립트", "실행"); // 위에 함수를 재활용하여 같이 나온다. func("3. ", "제이쿼리", "실행");
결과보기
1. 함수실행 01
2. 자바스크립트실행 01
3. 제이쿼리실행 01

14. 함수 유형 : 함수와 변수를 이용한 형태

function func(num, str1, str2) { //
    document.write(num + ". " + str1 + str2 + " 02 ");
};

const youNum1 = 1;
const youNum2 = 2;
const youNum3 = 3;
const youStr1 = "함수 ";
const youStr2 = "자바스크립트 ";
const youStr3 = "제이쿼리 ";
const youCom = "실행 ";

func(youNum1, youStr1, youCom);
func(youNum2, youStr2, youCom);
func(youNum3, youStr3, youCom);
결과보기
1. 함수실행 02
2. 자바스크립트실행 02
3. 제이쿼리실행 02

15. 함수 유형 : 함수와 배열, 객체를 이용한 형태

function func(num, str1, str2) { //
    document.write(num + ". " + str1 + str2 + " 03 " + "
"); }; const info = [ { num: "1", name: "함수 ", com: "실행" }, { num: "2", name: "자바스크립트 ", com: "실행" }, { num: "3", name: "제이쿼리 ", com: "실행" }, ]; func(info[0].num, info[0].name, info[0].com); func(info[1].num, info[1].name, info[1].com); func(info[2].num, info[2].name, info[2].com);
결과보기
1. 함수실행 03
2. 자바스크립트실행 03
3. 제이쿼리실행 03

16. 함수 유형 : 객체 안에 변수와 함수를 이용한 형태

const info = {
    num1: 1,
    name1: "함수 ",
    com1: "실행 ",
    num2: 2,
    name2: "자바스크립트 ",
    com2: "실행 ",
    num3: 3,
    name3: "제이쿼리 ",
    com3: "실행 ",

    // result1 : function(){
    //     document.write("함수 실행 04");
    // }
    result1: function () {
        document.write(info.num1 + ". " + info.name1 + info.com1 + "04" + "
"); }, result2: function () { document.write(info.num2 + ". " + info.name2 + info.com2 + "04" + "
"); }, result3: function () { document.write(info.num3 + ". " + info.name3 + info.com3 + "04" + "
"); } }; info.result1(); info.result2(); info.result3();
결과보기
1. 함수실행 04
2. 자바스크립트실행 04
3. 제이쿼리실행 04

17. 함수 유형 : 객체 생성자 함수 (필수)

function func(num, name, com) {
    this.num = num; // const 생략
    this.name = name;
    this.com = com;

    this.result = function () {
        document.write(this.num + ". " + this.name + this.com + "
"); // 여기까지만 하게 되면 실행이 안됩니다. } } // 일반 함수와 다르다 보니 실행하는 법도 다르다. (인스턴스 생성) const info1 = new func("1", "함수 ", "실행 05"); const info2 = new func("2", "자바스크립트 ", "실행 05"); const info3 = new func("3", "제이쿼리 ", "실행 05"); // 실행 info1.result(); info2.result(); info3.result();
결과보기
1. 함수실행 05
2. 자바스크립트실행 05
3. 제이쿼리실행 05

18. 함수 유형 : 프로트 타입 함수 (중요)

function func(num, name, com) {
    this.num = num; // const 생략
    this.name = name;
    this.com = com;
}

func.prototype.result = function () {
    document.write(this.num + ". " + this.name + this.com + "
"); // 여기까지만 하게 되면 실행이 안됩니다. } // 일반 함수와 다르다 보니 실행하는 법도 다르다. (인스턴스 생성) const info1 = new func("1", "함수 ", "실행 06"); const info2 = new func("2", "자바스크립트 ", "실행 06"); const info3 = new func("3", "제이쿼리 ", "실행 06"); // 실행 info1.result(); info2.result(); info3.result();;
결과보기
1. 함수실행 06
2. 자바스크립트실행 06
3. 제이쿼리실행 06

19. 함수 유형 : 객체 리터럴 함수 (거의 죽은 문법)

func.prototype = {
    result1: function () {
        document.write(this.num + ". " + this.name + this.com + "
"); }, result2: function () { document.write(this.num + ". " + this.name + this.com + "
"); }, result3: function () { document.write(this.num + ". " + this.name + this.com + "
"); } } // 일반 함수와 다르다 보니 실행하는 법도 다르다. (인스턴스 생성) const info1 = new func("1", "함수 ", "실행 07"); const info2 = new func("2", "자바스크립트 ", "실행 07"); const info3 = new func("3", "제이쿼리 ", "실행 07"); // 실행 info1.result1(); info2.result2(); info3.result3();
결과보기
1. 함수실행 07
2. 자바스크립트실행 07
3. 제이쿼리실행 07

20. 즉시 실행 함수

(function func(){
    document.write("함수 실행");
}());
            
//생략
(()=> {
    document.write("함수 실행");
})();
결과보기
함수실행 함수실행

21. 파라미터 함수

function func(str = "함수 실행") {
    document.write(str);
}
func();
결과보기
함수실행

22. 아규먼트 함수

function func(a, b) {
    document.write(arguments[0]);
    document.write(arguments[1]);
}
func("함수 실행", "함수 실행");
결과보기
함수 실행함수 실행

23. 재귀 함수

자기 자신을 호출할 때 사용한다. (동시에 여러 개 실행)

// 반복적으로 실행할 때 사용
function func(num) {
    if (num <= 1) {
        document.write("함수 실행" + num);
    } else {
        document.write("함수 실행" + num);
        func(num - 1);
    }
                
    // func(); 무한
}
                
func(10);
                
// 애니메이션 실행 할 때 사용
// function animation() {
//     document.write("함수 실행");
                
//     requestAnimationFrame(animation);
                
//     // func();
// }
                
// animation();
결과보기
함수 실행10
함수 실행9
함수 실행8
함수 실행7
함수 실행6
함수 실행5
함수 실행4
함수 실행3
함수 실행2
함수 실행1

24. 콜백 함수 : 다른 함수의 인수로 넘겨지는 함수

첫 번째 함수 실행 > 두 번째 함수 실행

// callback을 완벽히 실행 후 그 다음을 실행
function func() {
    document.write("함수 실행 02");
}

function callback(str) {
    document.write("함수 실행 01");
    str();
}

callback(func);
결과보기
함수 실행 01
함수 실행 02

25. 콜백 함수 : 반복문

function func(index) {
    document.write("함수 실행" + index);
}

function callback(num) {
    for (let i = 1; i <= 10; i++) {
        num(i); // num이 10번 반복 된다.
    }
}
결과보기
함수 실행1
함수 실행2
함수 실행3
함수 실행4
함수 실행5
함수 실행6
함수 실행7
함수 실행8
함수 실행9
함수 실행10

26. 콜백 함수 : 동기(동시 시작) / 비동기(동시 시작X)

// B가 실행이 되고 A가 나온다.
function funcA() {
    setTimeout(() => {
        console.log("funcA 실행");
    }, 1000); // 1초 후에 실행이 된다.
}

function funcB() {
    console.log("funcB 실행");
}

funcA();
funcB();

// A가 실행이 되고 B가 나온다.
function funcA(callback) {
    setTimeout(() => {
        console.log("funcA 실행");
        callback();
    }, 1000);
}

function funcB() {
    console.log("funcB 실행");
}

funcA(function () {
    funcB();
});

// A > B > C > D 순서로 실행
function funcA(callback) {
    setTimeout(() => {
        console.log("funcA 실행");
        callback();
    }, 1000);
}

function funcB(callback) {
    setTimeout(() => {
        console.log("funcB 실행");
        callback();
    }, 1000);
}

function funcC(callback) {
    setTimeout(() => {
        console.log("funcC 실행");
        callback();
    }, 1000);
}

function funcD() {
    setTimeout(() => {
        console.log("funcD 실행");
    }, 1000);
}

funcA(function () {
    funcB(function () {
        funcC(function () {
            funcD();
        });
    });
});
결과보기

27.


        
결과보기
함수 실행함수 실행

28. 내부 함수 : 스코프, 클로져

스코프와 클로져는 같은 개념이라 생각하면 된다. (다음에 또 정리)

function func() {
    function funcA() {
        document.write("함수 실행A");
    }
    funcA();

    function funcB() {
        document.write("함수 실행B");
    }
    funcB();
}
func();
결과보기
함수 실행A 함수 실행B

29. 클래스

함수의 단점을 보완해주고 좀 더 깔끔하게 코딩을 하게 해준다.

class study {
    constructor(num, name, job) {
        // 변수가 자동으로 저장 되어 필요한 것만 가져다 쓸 수 있다. (생성자 함수)
        this.num = num;
        this.name = name;
        this.job = job;
    }

    result() {
        document.write(this.num + ". 내 이름은 " + this.name + "이며, 직업은 " + this.job + " 이다.");
    }
}

const info1 = new study("1", "초코딩", "웹퍼블리셔");
const info2 = new study("2", "코찔이", "웹디자이너");

info1.result();
info2.result();
결과보기
1. 내 이름은 초코딩이며, 직업은 웹퍼블리셔 이다.
2. 내 이름은 코찔이이며, 직업은 웹디자이너 이다.

30. 클래스 상속

 class study {
    constructor(num, name, job) {
        // 생성자 함수
        this.num = num;
        this.name = name;
        this.job = job;
    }
    // 함수 실행문
    result() {
        document.write(this.num + ". 내 이름은 " + this.name + "이며, 직업은 " + this.job + "입니다.
"); } } class study2 extends study { constructor(num, name, job, age) { super(num, name, job); // 기존에 사용한 생성자 함수를 재활용 하기 위해 super 사용(상속개념) this.age = age; } // 함수 실행문 result2() { document.write(this.num + ". 내 이름은 " + this.name + "이며, 직업은 " + this.job + "이며, 나이는 " + this.age + " 입니다.
"); } } // 인스턴스 생성 const info1 = new study("1", "웹쓰", "웹퍼블리셔"); const info2 = new study2("2", "코초딩", "프론트앤드 개발자", 26); // 실행문 info1.result(); info2.result(); info2.result2();
결과보기
1. 내 이름은 초코딩이며, 직업은 웹퍼블리셔 이다.
2. 내 이름은 코찔이이며, 직업은 웹디자이너 이다.
👆🏻 맨 위로 올라가기