자바스크립트가 아니야?
객체가 함수를 가지고 있으면 해당 함수를 '메소드' 라고 부른다.
잘 생각해보면 드물지 않게 사용하는 setTimeout, console, fetch, localstorage 등은 메소드 라고 부르지 않았다.
브라우저가 읽은 자바스크립트니까 브라우저 콘솔에 노출되고, 서버에서 실행된 자바스크립트니까 터미널에서 노출되는게 왜인지 몰라도 나에게는 무척 자연스러웠다.
하지만 팩트를 알고 보면 수학문제 n번 째 줄에는 몇개의 바둑알이 존재할것인가 에 대하여 직접 그려가며 맞추는식이 아닌 나름의 사정이 있던 것.
그렇다. 자바스크립트인줄 알았던 많은 메서드가 사실은 api 였던것.
개발자는 자바스크립트의 기능인 console.log 나 setTimeout 을 실행 시키는 것이 아니라 그저 실행환경인 브라우저에게 부탁하고 있던 것이었다.
더 깊게 파고 들어가면 이벤트 루프 뭐시기 까지도 들어갈 수 있겠지만 패스하고,
(내 웹개발 지식은 어떻게 이루어져 있는가 > 랜덤한 인도사람이 올린 유트브 영상)
정리하자면 어떤 소프트웨어적인 기능을 이용하기 위해 자바스크립트로 코드를 작성했던것 뿐이다.
바로 이점이 클라이언트 환경에서는 브라우저 개발자도구에, 노드환경에서는 터미널에 로그가 찍이는 이유가 되는것이다.
우리가 console.log 와 같이 객체나 함수의 임포트없이 사용할수 있었던 이유가 바로 이 api 를 가진 녀석이 전역객체로써 생략을 허용하기 때문이다.
eg )
console.log = window.console.log
document = window.document
// node 에선 window 가 global