오랜만에 12시 넘기 전에 작성하는 TIL✏️
var a = 1;
b = 2;
console.log(window.a); // 1
console.log(window.b); // 2
둘 다 출력이 됐다.
하지만 vscode에서 study.js 파일을 만들고 아래와 같은 코드를 작성 후 node study.js를 입력하면 결과가 달랐다.
var a = 1;
b = 2;
console.log(window.a); // undefined
console.log(window.b); // 2
이렇게 출력이 됐다. mdn의 var
설명에 따르면
선언된 변수들의 값 할당은 할당이 실행될 때 전역변수(이것은 전역 오브젝트의 프로퍼티가 됩니다)처럼 생성이 됩니다. 선언된 변수들과 선언되지 않은 변수들의 차이점은 다음과 같습니다:
이렇게 나와서 나는 var a
도 global에 들어가는 주 알았다. 하지만 위에서 알 수 있듯이 결과는 그렇지 않아서 질문을 했는데 오픈채팅 방에서 코드 깎는 노인님에게 답변을 얻을 수 있었다.
위의 코드를 다 지우고 아래를 입력하면 다음과 같은 결과를 알 수 있다.
console.log(arguments.callee.toString());
/*
function (exports, require, module, __filename, __dirname) {
console.log(arguments.callee.toString())
}
*/
즉, var a
는 알고보니 함수의 안에 선언이 되는 것이어서 global
에서 확인할 수 없던 것이었다. 브라우저 환경과는 다른 거 같아서 좀 더 공부를 해야겠지만 저런 익명함수 안에 선언된다는 것을 처음 알았다. 코드님께 많이 배우고 있고 유튜브 내용도 정말 좋다!🙇♂️
요즘 친구들을 만나면 서로 회사 기술 얘기나 관심 있는 기술 얘기를 하는데 너무 재미있다. 그리고 시야가 넓어지는 거 같아서 좋다. 나도 좋은 회사에 가서 더 좋은 이야기를 해주고 싶고 지금 회사에서 얼마 안 남았는데 남은 기간 잘 보내야겠다!