본문 바로가기

프로그래밍/Javascript

(3)
null과 undefined의 차이 null과 undefined 이 두 타입의 값은 자바스크립트를 사용할 때 조심히 사용해야 하는 값들이다. 둘 다 변수에 값이 없음을 나타내는데 둘의 의미는 다르다. null null은 자바스크립트의 primitive 값 중 하나로 null 또는 빈 값을 표현한다. 클로저를 이해하려면 자바스크립트의 렉시컬 스코프를 이해해야 하는데 자바스크립트는 컴파일 단계에서 소스코드 문자열을 분석하여 의미를 부여하는 렉싱이라는 작업을 하게 되고 이때 스코프가 된다. //정의된 적도 없고 초기화된 적도 없음 foo; // ReferenceError: foo is not defined //foo는 존재하지만, 값과 타입이 없다. let foo = null; console.log(foo); // null console.lo..
클로저란? 렉시컬 스코프 클로저를 이해하려면 자바스크립트의 렉시컬 스코프를 이해해야 하는데 자바스크립트는 컴파일 단계에서 소스코드 문자열을 분석하여 의미를 부여하는 렉싱이라는 작업을 하게 되고 이때 스코프가 된다. function foo() { var a = 100; function bar() { var b = 200; console.log(a + b); } bar(); } foo(); 우리가 위 코드를 실행하면 foo() 메서드 내의 bar() 메서드 안의 console.log() 메서드가 실행되는데 a + b를 구하기 위해 bar()함수의 스코프부터 a변수를 찾게 된다. 찾지 못하였으니 그다음 foo()함수의 스코프 찾게 되고 a변수를 사용하였으니 사용한다. b변수는 bar스코프 내에 있으니 바로 사용하여 30..
호이스팅이란? 호이스팅이란? 자바스크립트는 실행 시 코드가 위에서부터 한줄한줄 차례대로 실행된다고 생각할 수 있으나 아래의 예시를 보면 조금 다르다는 것을 알 수 있다. a = 100; var a; console.log(a); //undefined가 아니라 100 . console.log(a); //100이 아니라 undefined var a = 100; 자바스크립트는 실행되기 전 함수 내 선언된 변수는 함수의 최상단으로, 함수 바깥의 경우는 전역 범위의 최상단으로 선언문을 끌어올린다. 이때 주의해야 할 점은 선언문만 끌어올려지는 것이며, 할당은 호이스팅이 되지 않는다. 이를 이해했다면 위의 두 번째 예시에서 100이 출력되지 않고 undefined가 출력된 지 이해할 수 있다. console.log(a); var a..