TIL - 2021.12.19

요리하는코더·2021년 12월 19일
0

TIL

목록 보기
186/193
post-thumbnail

오랜만에 12시 넘기 전에 작성하는 TIL✏️

👉 오늘 한 일

  • 개인 공부

👉 공부한 내용

  • javascript를 공부하는데 블로그 글을 보면서 따라 작성하고 있엇다.
    브라우저에서 아래의 코드를 입력했을 때
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에서 확인할 수 없던 것이었다. 브라우저 환경과는 다른 거 같아서 좀 더 공부를 해야겠지만 저런 익명함수 안에 선언된다는 것을 처음 알았다. 코드님께 많이 배우고 있고 유튜브 내용도 정말 좋다!🙇‍♂️

☕️ 잡담

요즘 친구들을 만나면 서로 회사 기술 얘기나 관심 있는 기술 얘기를 하는데 너무 재미있다. 그리고 시야가 넓어지는 거 같아서 좋다. 나도 좋은 회사에 가서 더 좋은 이야기를 해주고 싶고 지금 회사에서 얼마 안 남았는데 남은 기간 잘 보내야겠다!


📑 참고사이트

profile
요리 좋아하는 코린이

0개의 댓글