프로그램을 구성하는 기본적인 building block
subprogram이라고도 하며 여러번 재사용이 가능함
한가지의 task나 어떠한 값을 계산하기 위해 사용됨
function name(param1, param2) {body ... return;}
one function === one thing
function is object in JS
Parameters
premirive parameters: passed by value
(값에 바로 저장)
object parameters: passed by reference
(레퍼런스에 저장)
function showMessage(message, from ='unknown') { console,log(`${message} by ${from}`) } showMessage('Hi!');
파리미터 값을 전달하지 않을때 파리미터에 바로 default값을 넣을 수있다.
파라미터 앞에 ...을 넣어 주면 배열 형태로 전달 함.
{}안에서 변수를 선언하게 되면 지역변수로 안에서만 접근 가능 함.
밖에서 출력하게 되면 에러가 나게 됨.
함수에서 다시 함수를 선안 할시 안의 함수(자식함수)는 밖의 부모 함수에서 선언된 변수를 접근 할 수있다.
하지만 부모함수는 자식함수 안에서 선언된 변수는 접근 할 수가 없다.
(중첩함수에서 자식함수가 부모 함수에서 선언된 변수를 접근 하는것은 클로져 라고 부른다.)
a function expression is created when the execution reaches it.
a function declaration can be called earlier than it is defiend.(hoisted)Hoisting 이가능함
(function hello() { console.log('IIFE'); })();
함수를 ()소괄호 안에 넣어주고 함수 밖에서 ();로 호출 해주면 바로 함수가 호출되어짐.