728x90
// [ JS 데이터 ] 참조형 - Function
function hello() {
console.log('Hello !')
}
hello() // 함수 호출 (call) => Hello !
// 만약에 hello() 가 아니라 hello 만 작성 하면 어떠한 개념 일까 ?
// 함수명에 소괄호 () 를 붙히는 것 => 해당 함수를 호출.
// 즉, 소괄호 () 를 붙히지 않으면, 함수를 호출 하지 않음.
// 함수명 만 작성시 => 함수 그 자체 (덩어리) 라고 생각 하면 된다.
console.log(hello) // 함수의 정보 그 자체가 나오는 것을 볼 수 있다.
// ===========================================================
function getNumber() {
return 123
}
console.log(getNumber) // 함수 자체 출력.
console.log(getNumber()) // 123 (return 값이 출력 된다)
console.log(typeof getNumber) // function
console.log(typeof getNumber()) // number
// ===========================================================
const getNumber2 = function () { // 함수 데이터 자체를 변수에 담을 수도 있다.
return 123
}
console.log(typeof getNumber2) // function => getNumber2 라는 변수는 하나의 함수 데이터가 되었다.
console.log(typeof getNumber2()) // number
console.log(getNumber()) // 123
// 즉 함수의 호출은 함수가 반환 하는 return 값
// ===========================================================
const a = function () {
console.log('A')
}
const b = function (c) { // 매개변수 c
console.log(c) // 123
}
b(123) // b() 함수에 인자로 123을 대입 하기.
b(a) // 인자로 const a 를 대입 하기. -> console.log(a) 가 되므로, a 함수 데이터 자체가 출력 된다.
// 위의 예제는 익명 함수를 변수에 대입 하는 경우이고,
// b() 라는 표기 방법이 좀 어색 하긴 하지만 익숙해져야 할 듯 하다.
// 자바와 다르게 자바스크립트는 함수가 객체 처럼 다루어질 수 있고,
// 자바스크립트 에서는 함수를 변수에 할당 할 수 있다.
// 또한 이렇게 함수가 대입된 변수명 뒤에 함수 처럼 소괄호 () 를 붙혀서,
// 대입된 함수를 호출 할 수 있는 특징을 가진다.
// 자바에서 함수를 변수에 대입 하기 위해서는,
// 람다식과 인터페이스를 사용 해야 한다.
함수가 객체 처럼 다루어지기 때문에, 익명 함수가 대입된 변수 b는 해당 익명 함수를 참조 하게 된다.
따라서, 변수 b를 b() 와 같이 호출 하게 되면, 변수가 참조 하고 있는 익명 함수가 실행 된다.
반응형
'자바스크립트 (JavaScript) > 이론' 카테고리의 다른 글
[ JS 데이터 ] 참과 거짓 (Truthy & Falsy) (1) | 2023.10.31 |
---|---|
[ JS 데이터 ] 형 변환 (Type Conversion) (1) | 2023.10.31 |
[ JS 데이터 ] 참조형 - Object (0) | 2023.10.30 |
[ JS 데이터 ] 참조형 - Array (0) | 2023.10.30 |
[ JS 데이터 ] 원시형 - Boolean, null, undefined (0) | 2023.10.30 |