갑자기 console.log가 궁금해졌다!!
- 그 이유는 며칠전 켄님과 화상면담을 했는데 켄님께서 어떤분이 console.log에 관해 엄청난 설명을 하셨다고 한다.
그러면서 저도 갑자기 console.log 는 분명히 console이라는 객체에서 log라는 프로퍼티를 접근하여 사용하는것인데
내가 직접 코드로 console 이라는 객체를 선언하지도 않았고 보이지 않는다.
그래서 이 console 이라는 객체의 선언된 위치를 알아보자 라는 생각으로 시작되었다...
2. console은 window.console?!
- Window.console : console 이라는 객체도 Window 라는 객체 내부에 포함되어져 있다는것 알게 되었다.
3. window 객체?! 전역 객체?!
- window 라는 객체는 전역 객체이다.
- 전역객체란?!
1.단 하나만 존재 한다.
2.모든 객체의 조상이다.
3.자바스크립트에는 전역 객체로 선언된 객체들이 항상 존재.
4.전역 객체는 생략 가능.
- Window 객체
- 웹브라우저 상에서 전역 객체를 window 객체라 한다.
- 자바스크립트는 코드를 실행하기전에 window 전역 객체를 생성한다.
- 자바스크립트에서 변수는 window 객체의 프로퍼티로 들어간다.
- 자바스크립트 선언된 객체의 조상이다.
- 전역객체이여서 생략 가능.
- 가장 최상위 객체이다.
var str = "kong"; // 전역 변수
str === window.str; // window 객체 프로퍼티와 전역변수 동일하다.
결과 : true;
var str = "woo";
console.log(str);
결과 : woo
window.console.log(str);
결과 : woo
- window 전역객체는 생략 가능하므로 console.log 나 window.console.log 같다.
정리하자면,
console.log()는 window.console.log() 와 같다.
그러면 log() 함수는 console 이라는 객체의 메서드이고 console은 window 라는 전역객체의 프로퍼티이다.
window 객체는 자바스크립트에서 소스코드를 실행하기 전에 생성되며 브라우저의 전역객체이다.
node.js의 전역객체는 global 이라 한다.
- 이상으로 문제있는 부분은 언제든지 지적부탁드립니다.
참조사이트 :
https://developer.mozilla.org/ko/docs/Glossary/Global_object
https://www.zerocho.com/category/JavaScript/post/573b321aa54b5e8427432946
https://poiemaweb.com/js-global-object