Codeit/JavaScript

값으로서 함수

효땡 2024. 8. 8. 15:29

자바스크립트

- 함수를 특별한 종류의 값으로 취급

- 자바스크립트의 함수는 어디에서나 할당될 수 있음

- 다양한 형태로 호출될 수 있음

const printJS = function () {
  console.log('JavaScript');
};

console.log(typeof printJS); // function -> 실제로는 객체타입(Object)
const printJS = function () {
  console.log('JavaScript');
};

// 함수호출
printJS(); // JavaScript

 

- 객체 안에 메소드로도 사용가능

const myObject = {
  brand: 'Codeit',
  bornYear: 2017,
  isVeryNice: true,
  sayHi: function(name) {
    console.log(`Hi! ${name}`);
  }
};

myObject.sayHi('JavaScript'); // Hi! JavaScript

 

- 배열에 담아서 호출가능

const myArray = [
  'codeit',
  2017,
  true,
  function (name) {
    console.log(`Hi! ${name}`);
  }
];

myArray[3]('Codeit'); // Hi! Codeit

 

- 값으로 평가되는 함수는 다른 함수의 파라미터로 전달가능

const myBtn = document.querySelector('#myBtn');

myBtn.addEventListener('click', function () {
  console.log('button is clicked!');
});
function makeQuiz(quiz, answer, success, fail) {
  if (prompt(quiz) === answer) {
    console.log(success());
  } else {
    console.log(fail());
  }
};

// 함수를 호출할 때 미리 선언된 함수를 전달하면서
// 조건에 따라 그 함수가 나중에 호출되거나 호출되지 않는 동작을 구현할 수 있음
function getSuccess() {
  return '정답!';
};

function getFail() {
  return '오답!';
};

const question = '5 + 3 = ?';

makeQuiz(question, '8', getSuccess, getFail);