switch
switch(x) {
case 'value1':
...
[break]
case 'value2':
...
[break]
default:
...
[break]
}
✔ break가 나오기 전까지는 밑의 case를 계속 진행
✔ 문자는 '' value값 지정
function
//기본 모양
function name(parameter1, parameter2, ... parameterN) {}
//매개변수 기본값 설정
function showMessage(from, text = "No reply") {
alert( from + ": " + text );
}
showMessage("Ann"); // Ann: no text given
function showMessage(from, text = Function2()) {
// Function2()은 text값이 없을 때만 호출됨
// Function2()의 반환 값이 text의 값이 됨
}
//반환값
function sum(a, b) {
return a + b;
}
let result = sum(1, 2); // result값에 sum()함수 반환값이 들어감
✔조심해야하는 부분
return 값이 길면 괄호를 열어서 넣어준다.
대신 괄호는 return에 붙여서 써준다.
아니면, return 뒤에 바로 ;가 붙은 것으로 인식해서
아무것도 반환하지 않은것으로 인식해 버린다.
함수 저장
function origin() { // (1) 함수 생성
alert( "try!!" );
}
let copy = origin; // (2) 함수 복사 여기서 만약 origin();을
//넣었다면 origin()함수의 반환값을 copy에 넣어주는 것과 같다.
func();
sayHi();
콜백 함수
function ask(question,accept,reject){
if(confirm(question)){accept();}
else{no();}
}
function accept_fun(){
alert("접속되셨습니다.");
}//콜백함수
function reject_fun(){
alert("접속되지 않았습니다.");
}//콜백함수
ask("관리자 이신가요?",accept_fun,reject_fun);
익명함수
function ask(question,accept,reject){
if(confirm(question)){accept();}
else{no();}
}
ask("관리자 이신가요?",
function(){alert("접속 됨")}, //익명함수
function(){alert("접속 안됨")});
함수 표현식 vs 함수 선언식
//함수선언
function sum(a, b) {
return a + b;
}
//함수 표현식
let sum = function(a, b) {
return a + b;
};
✔함수 표현식은 실제 실행 흐름이 해당 함수에 도달했을 때 함수를 생성함
따라서 실행 흐름이 함수에 도달했을 때부터 해당 함수를 사용할 수 있음
✔함수 선언문은 함수 선언문이 정의되기 전에도 호출할 수 있음
스크립트가 실행되기전 준비단계에서 전역에 선언된
함수 선언문을 찾아 해당 함수를 생성하기 때문.
엄격모드
엄격 모드에서 함수 선언문이 코드 블록 내에 위치하면
해당 함수는 블록 내 어디서든 접근할 수 있음.
하지만 블록 밖에서는 함수에 접근하지 못함.
함수 선언문은 if 안 블럭에 있고, 블럭을 빠져나와서
함수를 불러오면, error가 발생한다.
화살표 함수
let func = (arg1, arg2, ...argN) => expression
//e.g
let sum = (a, b) => a + b;
alert( sum(1, 2) ); // 3