
1) 함수명은 자유롭게 정할 수 있음
2) 매개변수는 없을수도, 한개 혹은 그 이상일 수 있음. 쉼표로 구분
3) {} 중괄호 내부는 함수의 실행코드를 작성
4) 함수명 뒤에 ()붙여서 호출 가능 매개변수가 필요하다면 ()안에 넣어줌
ex) sayHello('Mike');
function showErorr(){
alert('에러발생');
}
showErorr();
function sayHello(name){
const msg = `Hello, ${name}`;
console.log(msg);
}
sayHello('Mike'); // "Hello, Mike"
sayHello('Tom'); // "Hello, Tom"
- 혹은 매개변수를 모를 때
function sayHello(name){
let msg = `Hello`;
if(name){
msg += `, ${name}`;
}
console.log(msg);
}
sayHello(); // "Hello"
sayHello(Mike); // "Hello, Mike"
: 매개변수가 없을 때 함수 실행 시 undefined 반환 - if에 undefined값이 들어가면 false로 반환되기 때문에 let msg = 'Hello'로 적용되어 log에 찍힘
function sayHello(name){
let msg = `Hello`;
if(name){
msg += `, ${name}`;
}
console.log(msg);
}
console.log(msg) // 에러!
- 변수를 함수 외부에서도 사용하고 싶다면 함수 외부로 빼줘야함 let msg = `Hello`;
function sayHello(name){
if(name){
msg += `, ${name}`;
}
console.log(msg);
}
console.log(msg) // "Hello"

- 3행 msg는 전역변수
- 7행 msg는 지역변수
- 함수 내부에서 let으로 전역변수와 동일한 이름으로 선언 가능하고 서로 간섭받지 않음

- 9행 호출이 undefined으로 반환되는 이유
: 매개변수로 받은 값은 복사된 후 함수의 지역변수가 됨
Tip
- 전체 서비스에서 공통으로 바라봐야하는 변수를 제외하고는 지역변수를 쓰자
- 전역변수가 많아지면 관리 힘들어짐
- 함수에 특화 된 지역변수를 사용하자