<script>
let count = 0;
function aa(){
count +=1;
// return; 함수의 무조건 탈출
document.write(count + "번 수행<br>");
}
function bb(){
document.write("<br>bb 함수처리");
cc(5);
document.write("<br>bb함수 처리 완료");
document.write("<br>", cc(5));
// 위 한줄과 아래 두줄이 같은 말
//result=cc(5);
//document.write("<br>",result);
document.write("<br>", cc("kor"));
document.write("<br>");
dd(5,10);
dd(5);
dd(); // undefined로 나옴
dd(5,10,15); // 마지막은 무시됨
// 자바였으면 타입, 아규먼트 갯수가 달라 오류나고 프로그램 끝남
}
function cc(arg){ // 매개변수가 있는 함수
let kk = arg+10;
document.write("<br>kk : "+kk);
// return undefined; // js는 반드시 값 하나를 리턴하는데 기본값이 undefined이다.
// 🥎함수의 반환값은 기본이 undefined(생략하면 기본값 적용)
return kk;
}
function dd(a,b){ // a,b는 지역변수
document.write("<br>", a,' ',b);
}
</script>
</head>
<body>
<script>
aa();
aa();
bb();
cc(10);
// 이 함수들을 script밖에서 호출하면 그냥 문자값(html 내부)으로 호출됨. js내에서 함수로 가능한거
(function kbs(){
document.write("<br>대한민국 대표방송")
})(); // 일회용, 자기 혼자 실행함
</script>
마지막에 써준 일회용은 IIFE(Immediately Invoked Function Expression)이라 한다.
선언과 동시에 출력하고 사용법은 앞. 뒤로 ()로 묶어서 사용한다.
출력값 :

🥎함수의 반환값과 관련하여
js에서 함수는 반드시 값 하나를 리턴한다고 썼다.
예를들어,
> function cc(arg){ // 매개변수가 있는 함수
document.write(arg);
return arg;
}
> cc("cup");
> documet.write(cc("cup"));
이렇게 cc함수를 두 번 호출했다 가정.
cc("cup");에서는 cup만 출력된다.
documet.write(cc("cup"));에서는 return값과 함께
cup이 두 번 출력된다.
즉, return값이 같이 출력되는 경우는 함수만 호출할 때가 아닌 document.write로 호출했을 때만 return값도 출력이 되는 것이다.
- return값을 안 주면 기본값으로 undefined가 출력된다.
cc(); document.write(cc());와 같이 인자값을 아예 안주게 되면 undefined로 cc에서 1번, document에서 2번 해서 총 3개의 언디파인드가 출력된다.
정리하자면, 함수에서 return값을 '안 주게 되면' document.write로 출력했을 때 인자값을 넣어도 return기본값인 undefined가 출력되니 헷갈리지 않도록 하자 !!