브라우저의 내장함수인 alert, console, confirm 등도 이러한 함수에 포함된다.
funtion sayHello(name){
console.log(`hello, ${name}`);
}
일반적으로 이러한 형태로 작성을 하며 각각의 역활은
function : 함수
sayhello : 함수명
(name) : 매개변수 (없을수도있고,여러개일수도 있다.) (name,age,adress) 처럼 가능
{} : 함수의 실행코드
function showError(){
alert('에러 발생, 다시시도 바람.')
} ///이렇게 작성을 완료한후
showError(); /// 이렇게 호출하면 함수안의 내용이 작동됨
function sayHello(name){
const msg = `Hello, ${name}`;
console.log(msg)
} /// 이러한 형태로 작성 후
sayHello('mike'); /// 라고 호출을 하면 "Hello, mike" 가 실행된다.
함수는 반복적인 활동을 줄이기 위한 것이기 때문에
sayHello('mike');
sayHello('tmo');
sayHello('jane');
///호출만 바꿔서 하면 사용할 수 있게 된다.
function sayHello(name){
let msg = `Hello,`;
if(name){
msg = `sayHello, ${name}`;
}
console.log(msg);
}
sayHello()
/// 여기서 let 으로 변수명을 바꾼 이유는 msg의 내용이
나중에 바뀔것이기때문에 const 를 사용할 수 없어서 바꾸게 되었다.
/// sayHello() 로 실행을 하게 되면 출력값 : "Hello" 가 나오게된다.
//// 실행내용을 좀더 설명하자면
function sayHello(name){
console.log(name) /// 여기의 콘솔값은 undefined
즉 값이 지정되지 않아서 if문 자체가 실행이 되질 않았으며
let msg = `Hello,`;
if(name){
msg = `sayHello, ${name}`;
}
console.log(msg); /// 그렇기 때문에 이쪽의 let= msg의 내용만 실행이 되어버린것
}
sayHello() /// 결과적으로 "Hello" 만 출력이 되는 구조다
function sayHello(name){
let msg = `Hello,`;
if(name){
msg += name; /// name의 값을 msg 에 더해주겠다 즉 더해서 보내겠다의 의미
}
console.log(msg);
}
sayHello() ///출력값1 : "Hello"
sayHello(Mike) ///출력값2 : "HelloMike"
/// 각가의 콘솔값은 이렇게 나온다.
여기서 출력값2 가 단어가 너무 붙어 나오는게 신경쓰이면
msg += ', 'name; /// 이렇게 바꾸면 Hello, Mike" 가 출력된다.
msg += `, ${name}` ; /// 혹은 이렇게 백틱으로 사용해도 된다.
let msg = `Hello,`; //// 만약 이 변수를 사용하고 싶다면 함수 바깥으로 꺼내면 된다.
function sayHello(name){
if(name){
msg += name;
}
console.log(msg);
}
sayHello()
sayHello(Mike)
let msg = `Hello,`;
console.log('함수 호출 전') ///"함수 호출 전" //호출전이라서 Hello가 나왔고
console.log('msg) /// "Hello"
function sayHello(name){
if(name){
msg += name;
}
console.log('함수 내부') ///"함수 내부" // 내부에서 이미 바껴서 이 값이 나왔고
console.log(msg); /// "Hello, Mike"
}
sayHello(Mike);
console.log('함수 호출 후') ///"함수 호출 후" ///바뀐채로 저장이 되서 밖에서 호출해도 동일
console.log('msg') ///"Hello, Mike"
let msg = "welcome"
function sayHello(name){
let msg = "Hello"
console.log(msg + ' ' + name)
}
sayHello('Mike'); /// 출력값 : "Hello Mike"
------
let msg = "welcome"
console.log(msg) /// 출력값 : "welcome"
function sayHello(name){
let msg = "Hello"
console.log(msg + ' ' + name)
}
sayHello('Mike'); /// 출력값 : "Hello Mike"
console.log(msg)
let name = "Mike";
function sayHello(name){
console.log(name)
}
sayHello(); ///출력값1 : undefines
sayHello(jane); ///출력값2 : jane
그래서 전체 서비스에서 공통으로 바라봐야하는 부분을 제외하고는 지역변수를 쓰는 습관이 좋다
전역변수가 많아지면 관리가 힘들어지기 때문
function sayHello(name){
let newName = name || 'friend' ///출1 : 매개변수가 없기 때문에 name은 false or 연산자로 friend
let msg +=`Hello, ${newName}`
console.log(msg)
}
sayHello(); ///출력값1 : "Hello, friend" // 매개변수가 없기 때문에 or 연산자로 프렌드 출력
sayHello('jane'); ///출력값2 : "Hello, jane" // 매개변수에 jane 넣어줘서 제인 헬로가 나옴
[형태를 좀더 간단하게 사용한 함수식]
function sayHello(name = 'friend'){ /// 이 name 의 디폴스 값은 name 값을 지정해주지 않을때만 나옴
let msg +=`Hello, ${name}`
console.log(msg)
}
sayHello(); ///출력값1 : "Hello, friend"
sayHello('jane'); ///출력값2 : "Hello, jane"
function add(num1, num2){ /// 순서2 여기에 num1,2 를 만들어주엇으니 여기에 2,3 이 들어가고
return num1 + num2 ; /// 순서3 2,3을 넣고 + 해준 값을 리턴 반환하는
}
const result = add(2,3) /// 순서1 2,3 이라는 매개변수안에 숫자를 넣어주면
순서4 반환된 값이 여기 result 에 담기는것
console.log(result) /// 출력값 : 5```
코드를 입력하세요
function showError(){
alert('에러 발생. ');
return; /// 지금 처럼 return 만 사용시 리턴 오른쪽 값만 console에 띄움
alert('이 알럿은 절대 실행되지 않음')
}
const result = showError();
console.log(result);
//출력값 : alert '에러발생' 창만 띄우고 undefined 가 나옴
두번때 알럿이 발생안하는 이유는 리턴은 리턴까지만 출력되고 그 이후는
발생시키지 않음 그래서 break 용도로 사용되기도 한다.