왜 전역 변수를 사용하면 안 되나요? 1. 전역 변수(global variable)를 사용하게 되면 페이지에 포함된 모든 자바스크립트 변수들이 동일한 범위에서 실행됩니다. 같은 이름의 전역 변수나 전역 함수가 존재하는 경우 스크립트 뒤에 포함된 스크립트가 이전에 선언된 변수나 함수를 덮어 씌우게 됩니다. 이는 애플리케이션의 크기가 커지게 될수록 더 자주 발생될 것이며 연관되지 않은 코드들 간의 변수 오염을 발생시키게 되어 예상하기 힘든 버그를 발생시킵니다. 2. 하나의 단위 기능이 외부에 제공해야 하는 변수나 함수 이외에도, 내부적으로만 사용하는 변수와 함수가 노출되게 됩니다. 이는 단위 기능이 모듈로써 동작하기 힘들게 만들고 캡슐화(encapsultation)를 저해하는 행동입니다. 캡슐화가 되지 않은..
자바스크립트의 중첩 함수 자바스크립트는 함수 안쪽에 또 다른 함수를 선언하는 중첩(nested) 함수가 가능하다. 이는 자바스크립트가 함수(function)를 변수와 같이 값(value)처럼 다루기 때문인데 일례로 자바스크립트에서는 같은 이름의 변수와 함수를 선언하는 것이 불가능하다. 자바스크립트의 이런 독특한 문법인 중첩 함수를 어떤 경우에 어떤 관점에서 사용해야 하는지 혹은 지양해야 하는지 생각해보았다. 1. 클린 코드적 관점 함수가 반복된 코드의 재사용을 위해서 사용되는 경우가 많지만 함수는 클린코드적 관점에서 충분한 의미가 있다. // 유저가 무직자인지 확인한다. if(user.job == null) { ... } if(user.isUnemployed()) { ... } 두 개의 코드 예제는 같은..
Undefined? (null이랑 같은건가?) 자바스크립트에서는 (자바 같은 언어와 달리) 변수의 자료형을 별도로 표기하지 않고, 변수에 담기게 되는 값에 따라 자료형이 결정되게 됩니다. 이러한 특징때문에 undefined라는 상태를 다루게 되는데, 'undefined'라는 키워드는 해당 변수의 자료형이 정해지지 않았음을 나타냅니다. undefiend : 변수는 존재하나, 어떠한 값으로도 할당되지 않아 자료형이 정해지지(undefined) 않은 상태입니다. null : 변수는 존재하나, null 로 (값이) 할당된 상태. 즉 null은 자료형이 정해진(defined) 상태입니다. var var1; //undefined (어떤 값도 할당되지 않아서 자료형을 알 수 없음) var var2 = null; //..