:특정 기능을 수행하는 소스코드를 하나로 묶어서 필요할 때마다 사용하기 위한 구조
함수를 작성하는 방법은 3가지로 나눌 수 있습니다.
함수 선언문(Function Declaration), 함수 표현식 (Function Expression), 화살표 함수 (Arrow Function) 3가지가 있습니다.
function 키워드를 사용하여 함수를 선언하는 방식
function 함수명(파라미터) { // 3가지 중 이것만 호이스팅 적용됨!
실행문;
[return 반환값;] // 생략가능
}
function 키워드를 사용하여 정의한 함수를 변수에 할당하는 방식
const/let/var 변수명 = function(파라미터) {
실행문;
[return 반환값;]
}
=> 화살표를 사용하는 방식
const/let/var 변수명 = (파라미터) => {
실행문;
[return 반환값;]
}
함수명(값); // 함수 호출
const/let/var 변수명 = 파라미터1 => { 실행문; [return 반환값;] }
: 자바스크립트 엔진이 코드를 실행하기 전에 변수와 함수 선언을 끌어올리는 동작
: 평가(모든 선언문 등록) → 실행(런타임)
평가
실행
정리 : 자바스크립트는 순차적 실행이므로, 쭉 훓어보고 변수 선언(var 등), 함수 선언은 위로 올려서 먼저 실행
주의 : 변수와 함수의 할당은 호이스팅 되지 않으므로, 선언과 할당 작성에 주의
// var 호이스팅
console.log(x); // undefined
var x = 10;
console.log(x); // 10
// let 호이스팅
console.log(x); // ReferenceError: Cannot access 'x' before initialization
let x = 10;
console.log(x); // 10
greet(); // "Hello"
function greet() {
console.log("Hello");
}
삼각형 만들기
두 가지 정보(이모티콘, 숫자)를 입력받고,
숫자만큼의 길이(층)을 가진 직각삼각형을 이모티콘으로 만들기
// 이모티콘과 숫자 입력받기
let heart = prompt('이모티콘을 입력하세요');
let number = Number(prompt('숫자를 입력하세요'));
// 화살표 함수로 삼각형 만들기 함수 작성
const triangle = (icon, num) => {
for (let i=1; i<=num; i++){
document.write(icon.repeat(i),'<br>'); // 문자열.repeat(n) : 문자열을 n번 반복
}
}
// 함수 실행
triangle(heart, number);