function func(){}
1.2.1 표현식
1.2.2 네이밍 함수(naming function)
1.2.3 익명 함수(anonymous function)
function sum(){};
sum(); // 호출
애플리케이션 어디서든 호출해서 쓸 수 있다.
let (X)
const (O)
관용적이다 -> 일반적으로 좀 많이 사용되는, 보편적으로
const gugudan = function () {
for (i = 1; i < 10; i++) {
console.log(`${i}단`);
for (j = 1; j < 10; j++) {
console.log(`${i} * ${j} = ${i * j}`);
}
console.log("----------");
}
};
const getValue = () => ({name: "철수 "});
const getValue2 = () => [10];
function gugudan(dan) {
if (dan === 3) {
console.log("3단은 no");
return; // 함수를 중단하는 역할도 한다 -> undefined
}
for (let i = 1 ; i<=9 ; i++) {
console.log( ${dan} * ${i} = ${dan * i})
}
}
// 재사용성이 조금 아쉬움
const sum = (n1, n2, n3) => n1+n2+n3;
function sum() {
// arguments, caller, name, length, prototype
console.log(arguments);
}
// arguments 유사배열개체
function sum() {
let sum = 0;
for (let value of arguments) {
sum += value;
}
return sum;
}
function -> =>
const gugudan = function gugudan() => {};
const gugudan = () => {};
💫 바로 리턴하는 거면 중괄호 생략가능
const sum = (n1, n2) => n1 + n2;
const getValue = () => ({name: "철수 "});
const getValue2 = () => [10];
함수 선언문: 재활용성 높이기 위해서, 매개변수(parameter)
파라미터 > 인자 : 안 넣어진 파라미터의 값은 undefined로 됨
const sum = (a, b, ...args) => {
console.dir(args);
};
console.log(sum(10,20,30));
console.log(sum(10,20,30,40));
function sum(){
console.log(arguments[0] + arguments[1]);
}
sum(10,20);
💫
// 스코프
const a = 10;
function print() {
// 함수에서만 유효한 범위 -> 함수 스코프 -> 지역 스코프
// 블록 스코프 = 지역 스코프
const b = 20;
console.log(`함수 내부: ${a}, ${b}`);
}
print();
console.log(`함수 외부: ${a}, ${b}`)
const a = 10;
{
// 블록 스코프 -> 지역 스코프
const b = 20;
console.log(`블록 내부: ${a}, ${b}, ${c}`);
{
// 지역 스코프
const c =30;
console.log(`블록 내부: ${a}, ${b}, ${c}`)
}
// 찾아 올라가는건 OK, 찾아 내려가는건 X
}
// 재귀
function fac2(n) {
// 기저 사례
if (n === 0 || n === 1) return 1;
// 재귀 호출
return n * fac2(n - 1);
}
console.log(fac2(5));