Dev
-
자바스크립트에서 함수는 first-class object다.Dev/JavaScript 2014. 4. 2. 11:35
자바스크립트를 공부하다보면 first-class object(또는 citizen)라는 정의를 종종 볼 수가 있다. 이 first-class object는 무엇인지 찾아봤다. http://en.wikipedia.org/wiki/First-class_citizenhttp://ko.wikipedia.org/wiki/%EC%9D%BC%EA%B8%89_%EA%B0%9D%EC%B2%B4 대충 정리하면 변수에 저장 할 수 있어야 한다.함수의 파라미터로 전달 할 수 있어야 한다.함수의 반환값으로 사용 할 수 있어야 한다. 자료 구조에 저장 할 수 있어야 한다. 위와 같은 조건들을 충족하는 객체를 first-class object라 한다. 그럼 자바에서 함수, 즉 메소드는 first-class object 일까? 자바의..
-
JavaScript에서 "strict mode"를 사용해야 하는 이유Dev/JavaScript 2014. 4. 1. 12:00
Strict Mode는 ECMAScript 5 버전에 있는 새로운 기능으로써, JavaScript 코드에 더 나은 오류 검사를 적용하고, 좀 더 많은 예외를 발생시킨다. Strict Mode를 사용하면 암시적으로 선언한 변수를 사용하거나 읽기 전용 속성에 값을 할당하거나 확장할 수 없는 개체에 속성을 추가할 수 없다. 예를 들면 전역 객체들에 접근 하려 하는 것을 방지하고 예외를 발생 시킨다거나 상대작으로 안전하지 않은 액션이 발생하는 것을 방지한다. Strict Mode 대한 추가 정보는 ECMAScript Language Specification, 5th edition 에서 확인 할 수 있다. 아래는 예제는 Strict Mode를 선언 하는 방법이다. "var"를 사용하지 않아 전역 객체에 접근 하려..
-
JavaScript 에서 var 사용이 중요한 이유Dev/JavaScript 2014. 3. 31. 11:16
JavaScript에는 암묵적 전역(implied globals)이라는 개념이 있다. 아무것도 선언하지 않더라도 전역 객체가 이미 선언 돼있다는 의미로 생각하면 된다. 그렇기 때문에 var를 사용하지 않고 변수를 선언하거나, 선언되지 않은 변수를 사용하면 지역 함수 내에 있더라도 전역 객체의 프로퍼티(property)로 생성된다. 아래 예제를 살펴보면 b, d는 전역 객체의 프로퍼티로서 함수 내에 있더라도 전역에 속하게 된다.
-
이클립스(eclipse) workspace 설정 초기화Dev/Eclipse 2014. 3. 27. 10:15
이클립스를 사용할 때 workspace 지정시"Use this as the default do not ask again" 부분을 체크하면 다음부터는 물어보지 않는다. 물론 "File > Switch Workspace" 메뉴를 통해 경로를 재 설정 할 수 있지만 다시 물어보게끔 하고 싶은 경우가 있다. 그럴땐 아래와 같이 하면 된다. [이클립스 설치경로]\configuration\.settings\org.eclipse.ui.ide.prefs 파일을 연다. SHOW_WORKSPACE_SELECTION_DIALOG=false
-
script's attribute - async, deferDev/Html 2014. 3. 21. 14:39
html 문서에 스크립트 작성 순서를 놓고 의견이 아래와 같은 형태로 스크립트를 싱행 할 수 있다. defer 속성은 페이지 파싱이 완료된 후에 스크립트를 실행 하고,async 속성은 가능한한 빨리 스크립트를 비동기적으로 실행한다. 둘의 실행 시점 차이는 Peter Beverloo's Chart 를 보면 정확히 알 수 있다. 두개의 속성은 아래와 같은 규칙을 따른다.기본적으로 async 속성이 defer 속성보다 우선이다. async 속성이 있다면 스크립트는 가능한 빨리 비동기적으로 실행된다.async 속성이 없고 defer 속성이 있다면, 스크립트는 페이지 파싱이 완료된 후에 실행된다.async 속성을 인식하지 못하고 defer 속성을 인식하는 구형 부라우저에서는 비동기적으로 실행된다.