[2022-08-24] TIL - 19일차

2022. 8. 24. 16:03Golfzon tech/TIL

😁 Today I Learned

  • function
  • arrow function
  • return function
  • variable function
  • ajax

function

 

    <script>
        console.log("hello function");

        //1. arguements X  return X   
        function sleep() {
            console.log("sleep1()...");
        }

        sleep();
        console.log("-------------------");
        //2. arguments X , return O
        function sleep2() {
            console.log("sleep2()...");
            return 0; // 숫자, 문자열, 객체, 배열, 함수
        }
        
        sleep2();
        console.log("return : ", sleep2()); // return 값
        console.log("-------------------");
        
        // 3. arguments O , return X 
        function sleep3(x) { 
            console.log("sleep3()....", x);
        }
        
        sleep3();
        sleep3("kim");
        console.log("-------------------");
        
        // 4. arguments O , return O
        // function sleep (x=200) 
        function sleep4(x) { // x = 1  디폴트 값 
            console.log("sleep4()...",x);
            
            // x = x || 1; 1이 디폴트값 ,,, NaN,NaN 이 뜨는데 디폴트값으로 괜찮아짐.
            x ||= 1; // &&=    ,   ??=  물음표(optional chaining)는 undefined 하고 null만 체크를 해준다.
            // ?? = (?,?)
            
            return [11*x,22*x,33*x];
        }
        
        sleep4();
        sleep4(10); // 모든 리터럴 인자로 전달 가능.

        console.log("return 1 : ",sleep4()); // return 값
        console.log("return 2 : ",sleep4(10)); // return 값
        
        console.log("-------------------");

    </script>

 

  • argument 있을 때 없을때, return 이 있을 때 없을 때 구분하여 사용할 수 있다.
  • ||= , ??= (optional chaining) 형식으로 사용할 수 있다.

 

function2

    <script>
        console.log("hello function2");

        // 실전에서 가끔 arguments 가 섞일 때가 있다.

        function run() {
            console.log("run..");
            console.log(arguments);
            console.log(arguments.length);
            console.log(arguments[0]); // 11이 들어있어용.
            console.log(arguments[1]); // 11이 들어있어용.
            
            for (const i in arguments) {
                console.log(arguments[i]);
            }
        }

        run();
        run(11); // arguments 배열에 0번방에 11이 들어간다.
        run(11, 22, 33);

        console.log("-----------");

        // arguments 는 그냥 x가 1번 y가 2번 이라는 뜻이다.
        function stop(x, y) {
            console.log("stop()...");

            // var tx = arguments[2] || 100;
            // console.log(tx);

            // 이런식으로 나옴.
            // if(!arguments[2]){
                
            // }

        }

        stop(44,55);
        console.log("---------");

        function sleep(a,b,c,d) {
            console.log("sleep()..",a,b,c,d);
        }

        sleep(11,22,33); // 위에 d는 undefined 가 뜬다.  에러 안나고 콜이 되네..
    </script>

 

  • 자바스크립트에서 제공하는 argument 를 사용할 수 있다.

 

function3

    <script>
        console.log("hello function3");

        // 
        function eat(x) {
            console.log("eat()...", x);
        }

        eat(11);
        eat("kim");
        eat([11, 22, 33]); // 배열로 받았다.
        eat(["kim", 77]);
        eat(new Array(10)); // empty 10개짜리가 생성된다.
        eat({ name: "kim", age: 100 }); // 받는쪽에서 뭐.name 이라고 하면 사용하기 편하겠지?
        eat(new Object());
        
        // eat([11, 22, 33], [22, 33, 44]); // 이렇게도 되네.

        console.log("==========================");
        
        // 일급함수   이건 익명함수   ---- 자바 8버전 이후에 일급함수 가능하고 anonymous
        eat(function() {
            console.log("fn()...");
        }); // function 괄호 블럭
        
        // 이런식으로 바뀐다.  - arrow function
        eat(()=> {
            console.log("fn()...");
        }); // function 괄호 블럭
        
        
        console.log("==========================");
        
        function Person() {}
        
        eat(new Person());
        
        let p = new Person();
        p.user_name = "lee";
        eat(p);
        
        console.log("==========================");
        
        class Student{kor = 100;}
        
        let s = new Student();
        console.log(s);
        console.log("==========================");
        
        
        function count() {
            console.log("count()...");
        }
        
        eat(count);  // 이건 함수를 출력하는거고..
        eat(count()); // 이건 콜한 결과를 주는거고  리턴값이 없으니까 undefined 가 뜨겠지.
        
        console.log("==========================");
        // arrow funtion 애로우 펑션

    </script>
  • 함수 자체를 출력하는 것과 함수를 콜해서 return 값을 출력하는 것과 사용법이 다르다.

 

arrow_function

    <script>
        console.log("arrow_function... ");

        let arr = [11, 22, 33];

        // 
        arr.forEach(function (item, index) {
            console.log(item, index); // 11 0, 22 1, 33 2
        });

        // 같은 효과 (괄호가 없어도 된다. 한개 일 때만 )
        arr.forEach(item => {
            console.log(item);
        });
        // 이런식으로도 쓸 수 있다.   두개 이상은 괄호로 묶어야 한다.  한줄만 실행시키면 블럭이 없을 수도 있다.
        arr.forEach((item, index) => console.log(item, index));

        console.log("==========================");

        let obj = {
            name: "kim",
            age: 33,
            arr: [11, 22, 33],
            vo: { id: "admin" },
            fn: function () { } // 기능도 탑재가 가능하다.
        };

        // map!!!
        let arr_map = arr.map(function (item) {
            console.log(item);
            return item;
        });

        console.log(arr_map); // 길이도 똑같고 각각의 방번호마다 mapping 을 해서 값을 변경해주려고 할때 사용한다. 

        let arr_map2 = arr.map((item) => {
            console.log(item);
            return item * 100;
        });
        console.log(arr_map); // 길이도 똑같고 각각의 방번호마다 mapping 을 해서 값을 변경해주려고 할때 사용한다. 

        console.log("==========================");
        
        const names = [
            'Yangssem',
            'Kim',
            'Lee',
            'John'
        ];
        let arr_names_length = names.map(name => name.length);
        console.log(arr_names_length);
        
        // 앞에 문자열을 붙이고 싶다면..
        let arr_names_hello = names.map(name => "Hello"+name);
        console.log(arr_names_hello);
        
        console.log("==========================");
        // foreach , map , filter , event처리순으로 쓰인다.

        arr = [0,1,2,3,4,5];
        // filter : 거짓을 거르고 참인 애들만 데려오겠다라는 의미이다.
        let arr_even = arr.filter((item)=> item%2==0);
        console.log(arr_even);
        // 이름 네자 이하만 가져와라
        let arr_four = names.filter((name)=> name.length < 4);
        console.log(arr_four);


    </script>
  • 애로우펑션에서 파라미터가 한개일때는 소괄호를 쓰지않고 적어도 된다.
  • 오브젝트에 function을 넣어도 된다.
  • filter는 참인 애들만 (조건에 걸린) 데려오겠다는 의미이다.
728x90

'Golfzon tech > TIL' 카테고리의 다른 글

[2022-08-26] TIL - 21일차  (0) 2022.08.26
[2022-08-25] TIL - 20일차  (0) 2022.08.26
[2022-08-22] TIL - 18일차  (0) 2022.08.22
[2022-08-19] TIL - 17일차  (0) 2022.08.20
[2022-08-18] TIL - 16일차  (0) 2022.08.18