Javascript 13

var, let, const 비교하기

javascript에는 변수를 선언할 수 있는 3가지 키워드가 있습니다. 그리고 이와 관련된 내용을 검색해서 들어오셨다면 셋이 어떻게 다른지 알고 싶으실 것입니다. 각설하고, var, let, const는 두 가지의 기준으로 비교할 수 있습니다. 재선언이 가능한가? 재할당이 가능한가? var의 경우 재선언과 재할당이 모두 가능합니다. var a = 5; a = 4; console.log(a) // 4 (재할당 ok) var a = 3; console.log(a) // 3 (재선언 ok) var a; console.log(a) // undefined (재선언 ok) 개인적으로 재선언이란 개념 자체가 바람직한 프로그래밍 문법이 아니라고 생각합니다. 변수의 값을 변경하고 싶다면 재할당으로도 충분하기 때문입니다..

Javascript/core 2020.12.19

this에 관하여

함수가 호출될 때 동적으로 바인딩된다. 호출 방식에 따라 바인딩이 달라진다. 호출되는 문맥 브라우저 node.js 전역공간에서 호출 시 window global 함수 호출 시 window global 메소드 호출 시 메소드 호출 주체(메소드명 앞) callback 호출 시 기본적으로는 함수 내부에서와 동일 생성자함수 호출 시 인스턴스 함수 호출시 그런데 이상하다. 함수 호출 시에도 전역공간에서 호출한 것과 같은 효과가 나타난다. 이 경우에는 함수의 호출이 전역공간에서 일어난 것이므로 자연스럽다고 볼 수 있다. function a() { console.log(this); } a(); 함수 내에 함수가 호출된 경우에는 어떨까? function b() { function c() { console.log(thi..

Javascript/core 2020.12.15

hoisting과 TDZ

var의 경우 console.log(a()); console.log(b()); console.log(c()); function a() { return 'a'; } var b = function bb() { return 'b'; } var c = function() { return 'c'; } 이 코드는 자바스크립트의 hoisting에 의해 다음과 같이 해석된다 function a() { return 'a'; } var b; var c; console.log(a()); console.log(b()); console.log(c()); b = function bb() { return 'b'; } c = function() { return 'c'; } 어째서 변수에 함수가 할당이 되는지에 관해서는 일급함수에 대..

Javascript/core 2020.12.14