aotoyae

[JS] 함수 선언문 & 화살표 함수 : 호이스팅, 호출 위치 본문

JavaScript

[JS] 함수 선언문 & 화살표 함수 : 호이스팅, 호출 위치

aotoyae 2024. 2. 16. 14:59

 

 

💡 함수 선언문과 화살표 함수의 호출 위치에 대해 더 알아보자

 

코딩 테스트를 풀다가 화살표 함수를 선언 전에 호출했는데

실행이 되는 코드가 있어서 대체 왜 되는거지??!?! 하며.. 알아본 호출 위치의 비밀..

function solution(nums) {
  let answer = 0;

  for (let i = 0; i < nums.length - 2; i++) {
    for (let j = i + 1; j < nums.length - 1; j++) {
      for (let k = j + 1; k < nums.length; k++) {
        if (isPrime(nums[i] + nums[j] + nums[k])) { // 화살표 함수 호출
          answer++;
        }
      }
    }
  }

  console.log(answer); // 1
}

const isPrime = (n) => { // 화살표 함수 선언
  for (let i = 2; i <= Math.sqrt(n); i++) {
    if (n % i === 0) {
      return false;
    }
  }

  return true;
};

solution([1, 2, 3, 4]); // 화살표 함수를 쓸 함수 선언문을 화살표 함수보다 더 아래에서 호출해야 한다!

 

프로그래머스 소수 찾기 문제였는데

화살표 함수인 isPrime 값을 받아서 answer 을 증가시키는 코드이다.

 

function test1() {
  console.log("hi"); // "hi"
  // test3();
  if (test3()) {
    console.log("hello"); // "hello"
  }
}

// test2(); Error
const test2 = () => {
  console.log("bye");
};
// test2(); "bye"

const test3 = () => {
  return true;
};

test1();

 

마지막에 함수 선언문을 실행해서 된다는 걸 알기 전에

해 본 테스트 코드들..

 

test1 에서 test3 를 호출하고 있어서 실행이 안될거라 생각했었지만

test1 이 결국 마지막에 읽히니까 이미 test3 까지 읽었기에 실행이 된다!