function-2

이진화행·2022년 3월 21일
0

Kimeh

목록 보기
4/6

프로그램을 구성하는 기본 단위라고 생각하면 된다

sub-program 이라고 부르기도 함

여러번 재사용 가능

  • 하나의 함수는 한가지의 일만 하도록 정의 해야함
  • 함수는 동작하는 것이므로 동사 형태로 이름을 지정해야함
  • function = 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 parameters (es6 추가)

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;
    }
}
// 필요한 로직은 그 뒤에 작성하는게 좋다
  • 빠르게 값을 리턴 하는게 좋다
profile
기술블로그

0개의 댓글