function-2


プログラムを構成する基本単位と考えられる


sub-programとも呼ばれます


複数回使用可能

  • 関数は、
  • として定義する必要があります.
  • 関数は動作関数であり、
  • と動詞の形式で命名しなければならない.
  • 関数=object.
  • 
    function log (message) {
        console.log(message);
    }
    log('Hello@')
    log(1234)

    JavaScriptにはタイプがありません
    関数自体のみを表示する場合、文字のみを渡すか数値のみを渡すかは不明です
    タイプが重要であれば、JavaScriptは理解しにくいかもしれません
    -parameters
    // premitiive parameters: passed by value
    // 메모리에 벨류가 그대로 저장되어 있기때문에 벨류가 전달되고
    // object parameters: passed by reference
    // 메모리에 레퍼런스가 저장되어 있어서 레퍼런스가 전달됨
    function changeName(obj){
        obj.name = 'coder';
    }
    const kim = { name: ' kim '};
    changeName(kim);
    console.log(kim);
    -defaultパラメータ(es 6を追加)
    function showMessage(message, from = 'unknow') {
        console.log(`${message} by ${from}`);
    }
    showMessage('Hi')
    -Rest parameters
    // 배열 형태로 전달됨
    function printAll(...args){
        for(let i = 0; i < args.length; i++){
            console.log(args[i]);
        }
        // 위와 동일함
        for(const arg of args ){
            console.log(arg);
        }
    }
    printAll('kim','eun','hwa');
    外は内を見ず,内は外を見ず
    ゾーン変数はゾーンであるため、そこからしかアクセスできません.
    関数で他の関数を宣言できます
    子供は親になれる
    親の上司に子供がいるはずがない.
    let globaMessage = 'global'; 
    // global variable
    function printMessage(){
        let message = 'hello';
        console.log(message)
        // local variable
        console.log(globaMessage);
    }
    
    // 나쁜 예시 
    function upgradeUser(user){
        if (user.point > 10){
    
        }
    }
    // 블럭 안에서 로직을 많이 작성하면 가독성이 많이 떨어진다
    // 좋은 예시
    function upgradeUser(user){
        if (user.point <= 10){
            return;
        }
    }
    // 필요한 로직은 그 뒤에 작성하는게 좋다
    
  • 快速リターン
  • が望ましい