inblog logo
|
LifeLog, DevLog
    JS

    함수

    KYJTHEYJ's avatar
    KYJTHEYJ
    Nov 11, 2025
    함수
    // 함수
    // 작성한 코드의 일부를 뽑아와 묶은 후 특별한 의미를 부여하여 정의, 호출하고자 함이 목적
    
    function forState() {
        for (let index = 0; index < 100; index++) {
            console.log(index)
        }
    }
    
    // forState();
    
    // 정의는 function 함수명(매개변수){}
    // 호출은 함수명();
    
    // 콜백함수 -> 비동기 처리에 많이 쓰임
    // 다른 함수의 매개변수로 전달 되는 함수
    function processInput(callback) {
        let name = "yj";
        callback(name);
    }
    
    function greet(name) {
        console.log(`hello ${name}`);
    }
    
    processInput(greet);
    
    // 콜백함수 사용 예시
    // setTimeout()은 몇 초후 특정 함수를 실행할 때 이용하는 코드
    //setTimeout(() => {console.log("3초 후 실행")}, 3000);
    
    //------------------------------------
    
    // ES6 엔진에서만 사용 가능
    // 매개변수에 기본값 부여 가능
    function forEs6Function(value = {}) {
        for (let index2 = 0; index2 < value; index2++) {
            console.log(index2);
        }
    }
    
    forEs6Function();
    
    // 표현식으로 사용되므로 할당 가능
    let show = forEs6Function();
    
    // 람다식 함수는 기존에도 사용 가능 했지만
    let show2 = function (value = {}) {
        for (let index2 = 0; index2 < value; index2++) {
            console.log(index2);
        }
    }
    
    // 화살표 함수로 대체 되었다 **
    let value = 10;
    let show3 = (max) => {
        for (let index3 = 0; index3 < max; index3++) {
            console.log(index3);
        }
    }
    
    show3(value);
    
    // 객체를 반환시에 화살표 함수의 주의 점은 괄호로 감싸야함
    const obj1 = () => ({name: "YJ"});
    console.log(obj1); // 객체 반환이 안되고 그냥 변수가 객체를 참조한다는 [Function: obj1] 구문 출력
    console.log(obj1()); // 객체가 반환됨
    
    // this 바인딩 **
    // 함수의 형태에 따라 달라짐
    // 함수의 형태 : function, 화살표 함수
    const person = {
        name: "kyj1"
        , age: 31
        , sayHello: function () {
            console.log(this.name); // 이 때 this는 가장 가까운 변수를 찾음 // kyj1
        }
    }
    
    person.sayHello();
    
    // 화살표 함수는 this를 사용할 의도로 만들어 진 것이 아님
    const person2 = {
        name: "kyj2"
        , age : 31
        , sayHello: () => {
            console.log(this.name); // 이 때는 this가 선언된 부분의 전역을 찾음 // name이 없어 undefined
        }
    }
    
    // 바로 이 부분의 this, 즉 전역 this의 name을 찾음
    this.name = "what?";
    person2.sayHello();
    Share article

    LifeLog, DevLog - https://github.com/KYJTHEYJ

    RSS·Powered by Inblog