JS(javascript)

값으로써의 function

westone034626 2020. 11. 25. 15:09

*혼자 내용 정리를 위해 작성하는 글이라 정확하지 않은 정보가 포함되어 있을 수 있습니다.

 

// 예시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