값으로써의 function
*혼자 내용 정리를 위해 작성하는 글이라 정확하지 않은 정보가 포함되어 있을 수 있습니다.
// 예시1
function print() {
console.log("hello world");
}
// 예시2
const print = function() {
console.log("hello world");
}
// 예시3
(function() {
console.log("hello world");
})();
함수 부분을 다루다 특이하게 생긴 함수들을 발견했다.
예시2, 3이다.
예시1과 2는 같은 함수를 표현만 다르게 한 것이고
예시3은 일회성 함수, 익명함수라고 한다. 특징은 선언과 동시에 호출하는 것.
javascript는 다른 언어와 다르게 함수를 값처럼 다룰 수 있다고 한다.
const print = function() {
console.log("Hello World!");
}
// 예시2
obj = {
method: function() {
console.log("Hello World!");
}
}
// 예시3
function readyPrint(func) {
func();
}
print();
obj.method();
readyPrint(print);
값처럼 다뤄지기 때문에 예시1처럼 변수에 저장될 수 있다.
또한 예시2처럼 객체의 property에 대응하는 value로써 작성될 수도 있다.
또한 값이기에 예시3처럼 함수에 인자로 전달될 수도 있다.
위의 내용을 알게 됨으로써
'setInterval(func, time)' : 이 구조에서 왜 func이 func()이 아닌지 알거 같다.
func()은 해당 함수를 즉시 호출하는 것이고 func은 func이라는 곳에 저장된 함수를 전달한다는 뜻이다.
그리고 이와 관련된 coding convention
// Bad
const atom = {
value: 1,
addValue: function(value) {
return atom.value + value;
}
};
// Good
const atom = {
value: 1,
addValue(value) {
return atom.value + value;
}
};
아직 깊게 배우지 않아서 많은 정보를 적진 못하지만
적어도 나중에 이런 식으로 적힌 함수를 봐도 당황은 하지 않겠지.
끝.
참고 사이트:
opentutorials.org/course/743/6508
값으로서의 함수와 콜백 - 생활코딩
값으로서의 함수 JavaScript에서는 함수도 객체다. 다시 말해서 일종의 값이다. 거의 모든 언어가 함수를 가지고 있다. JavaScript의 함수가 다른 언어의 함수와 다른 점은 함수가 값이 될 수 있다는
opentutorials.org
opentutorials.org/course/743/4729
함수 - 생활코딩
함수 함수(function)란 하나의 로직을 재실행 할 수 있도록 하는 것으로 코드의 재사용성을 높여준다. 함수의 형식 함수의 형식은 아래와 같다. function 함수명( [인자...[,인자]] ){ 코드 return 반환값 }
opentutorials.org