Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

leebom

[03] function (함수의 선언과 표현) 본문

스터디/개인스터디(유투브 드림코딩 by엘리)(주5회)

[03] function (함수의 선언과 표현)

d0201d 2020. 9. 4. 10:39
'use strict';

//function
// 1.function 작성
// function name(param1, param2 ) { body......  return; }
// 하나의 함수는 한가지의 일만 하게 만들어야 함
// naming : doSomething, command, verb
// ex) createCardAndPoint => createCard , createPoint 로 세분화
function printHello() {
    console.log('hello');    //hello
}
printHello(); 

function log(message) {
    console.log(message);
}
log('hello11');   //hello11
log(1234);   //숫자가 문자열로 변환되어서 출력    //1234

// 2. Parameters
//premitive Parametere :value가 메모리에 그대로 저장
//object  Parameter :ref가 메모리에 그대로 저장
function changeName(obj) {  // 아래 bom(obj)안에 이름값을 coder로 변경
    obj.name = 'coder';
}

const bom = {name: 'bom'};
changeName(bom);
console.log(bom);    //{name: 'coder'}

// 3. Default parameters (add in ES6)
function showMessage(message, from = 'unknown') {  //from을 if문을 사용해서 작성하지 않고 상단에서 작성가능
    console.log(`${message} by ${from}`);  
} 
showMessage('Hi');    // Hi by unknown

// 4. Rest parameters (add in ES6)
function printAll(...args) {    //array 형태로 전달
    //방법1
    for(let i =0; i < args.length; i++){
        console.log(args[i]);
    }
    //방법2
    for(const arg of args) {
        console.log(arg);
    }
    //방법3
    args.forEach ((arg) => console.log(arg));
}   
printAll('dream','coding','bom');   //dream (\n) cording  (\n) bom

//5. local scope
let globalMessage = 'global';
function printMessage() {
    let message = 'hello';   //블럭 안에서만 선언된 변수 -> 지역변수 
    console.log(message); 
    console.log(globalMessage);
    function printAnother() {  //블럭안에 또다른 블럭을 넣을수 있음
        console.log(message); 
        let childMessage = 'hello';
    }
   // console.log(childMessage); 에러
}

//--> 자식은 부모에 정의된 값을 인식하나 자식안에 정의된 값은 부모 상위에서 인식할수 없음
//printMessage(message);   //에러발생( 블럭 안에서만 접근이 가능)
printMessage(globalMessage);  // global

// 6.Return a value.
function sum(a, b) {
    return a + b;   
}
const result = sum(1, 2);  //3(리턴값)
console.log(`sum:  ${sum(1, 2)}`);    //sum:  3

// 7. callback function
function randomQuiz(answer, printYes,  printNo) {
    if(answer === 'aa' )  {
        printYes();
    }else {
        printNo();
    }
}

//anonymous function
const printYes = function () {
    console.log('yes!!');
};
//named function  
// --> 디버깅을 할때 필요해서 function에 이름을 작성,
//  하지만 함수안에 함수를 호출할때 내용이 너무 많으면 안됨.필요한 수치를 계산할때 사용
const printNo = function print() {
    console.log('no!!');
    // print()
};
//호출
randomQuiz('ab', printYes, printNo);  //no!!
randomQuiz('aa', printYes, printNo);  //yes!!

//Arrow function
//anonymous function
const simplePrint = function() {
    console.log('simplePrint!!');
};
//
const simplePrint =  ( ) => console.log('simplePrint!!');
const add = (a, b) => a + b;

//8. IIFE - 선언함과 동시에 호출해서 실행
(function hello() {
    console.log('IIFE');  //IIFE
})();
Comments