분류 전체보기
-
자바스크립트 PatternsMy-Book(History) 2015. 3. 23. 17:05
a 는 지역 변수 b는 전역 변수가 된다. // 안티패턴. 사용하지 말것function foo() { var a = b = 0; } 이런 일이 생기는 이유는 평가가 오른쪽에서 왼쪽으로 진행되기 때문이다. 먼저 b = 0 이라는 표현식이 평가되는데, 이때 b는 선언되지 않은 상태다. 이 표현식의 반환 값 0 은 다시 var a 로 선언된 새로운 지역 변수에 할당된다. 즉 앞의 코드는 다음과 동일하다. var a = (b = 0); var 선언문을 빼먹었을때 부작용 - var를 사용하여 명시적으로 선언된 전역 변수(함수에 속하지않은 변수)는 삭제할 수 없다.- var를 사용하지 않고 생성한 암묵적 전역 변수는 삭제할 수 있다.(함수안에서 생성되었든 아니든)
-
-
-
HTML5 WebStorage(local 및 session)HTML5 2015. 3. 14. 23:06
WebStorage '키/ 값' 쌍으로 데이터를 저장하고 키를 기반으로 데이터를 조회하는 패턴이다 그리고 영구저장소(localStorage) 와 임시저장소(sessionStorage)를 따로 두어 데이터의 지속성을 구분할 수 있어 응용 환경에 맞는 선택이 가능하다 Web Storage 는 기존 웹 환경의 쿠키(Cookie)와 매우 유사한 개념이다 사실 거의 차이가 없어 보이기도 하다. 다만 몇 가지 쿠키의 단점를 극복하는 개선점이 도입되었다 그럼 쿠키(Cookie)는? 쿠키는 여전히 유효하고 꽤 적절한 클라이언트 저장도구 이다 HTML 5 에서 Web Storage 스펙을 새로 추가했지만 쿠키를 배제하는 것은 아니다 HTML 5 환경에서도 여전히 쿠키를 이용할 수 있다 다만 어떤 것을 사용할 지는 사용자..
-
자바스크립트(JavaScript) 리페인트 최소화 하는방법JavaScript 2015. 3. 14. 19:12
변경전(성능 저하 예시)// 사진 요소를 모두 얻는다var aPhotoItems = document.getElementByClassName(".photo_item"); // 모든 사진 요소의 속성을 바꾼다for(var i=0; i < aPhotoItems.length; i++) {aPhotoItems[i].style.backgroundColor = "#ccc";aPhotoItems[i].style.border = "1px solid #aaa";} 변경후 (성능 향상 예시)// 사진 요소의 부모 요소를 얻는다var elContainer = document.getElementById("container"); // 부모 요소에 클래스 속성을 추가한다.elContainer.className = "selected..
-
자바스크립트 컨텍스트, 클로저JavaScript 2015. 3. 9. 15:24
실행콘택스트 함수를 실행할 때마다 새로운 콘택스트가 생성된다. 스택구조를 하고 있고 스택의 Top이 현재의 실행콘텍스트이다. (스택프레임 같은 것) 함수외부(글로벌)의 자바스크립트 코드가 실행시 실행콘텍스트는 글로벌오브젝트이다. 함수내부의 자바스크립트 코드가 실행시 실행콘텍스트는 함수실행시에 생성된 Call오브젝트이다. 실행콘텍스트 == 글로벌/Call오브젝트 와 비슷? 자바스크립트 : 클로저(Closures) 자바스크립트의 클로저는 함수에 부모 함수의 범위에 대한 접근성을 제공한다. 개발자에게는 극히 혼란스러운 개념이다. 필자는 자바스크립트를 배울 당시 의도하지 않은 클로저로 인해 코드를 디버깅하는 데 몇 시간을 소비한 적이 있다. 이런 실수를 통해 배운 이후에는 클로저가 상당히 멋지다고 생각했고 다시..
-
자바스크립트 성능 향상 방법JavaScript 2015. 3. 8. 23:46
▶ 성능우위 문법 - 배열 생성시 : var arr = new Array(); 보다 var arr = []; 를 사용한다 - 배열 접근시 : arr.push(i) 보다 arr[i] = value 를 사용한다 - 객체 생성시 : var obj = new Object(); 보다 var obj = {}; 를 사용한다 - 객체 접근시 : obj["a"] = 1 보다 obj.a = 1; 를 사용한다 - 문자열 생성시 : var str = new String("aaa"); 보다 var str = "aaa"; 를 사용한다 - 문자열 연산시 : loop문에서 문자열 조작시에 str += "test"; 보다 arr=[]; loop{ arr[i]="test"; } arr.join(""); 을 사용한다 (String과 St..
-