본문 바로가기

Javascript34

panel collapse를 화살표 클릭 시에만 동작 하도록! titleCollapse가 동작을 안하네? ExtJS에서 panel의 collapsible이 true로 설정되면 해당 panel은 확장/숨김이 가능해진다.그런데 말입니다.여기에서 header 또는 타이틀을 클릭 시에도 확장/숨김 기능이 동작하는데, 화살표만 클릭 해서 동작하게 하고 싶어서 관련 문서를 찾아봅니다. 찾았다, titleCollapse 딱 속성 이름만 봐도 관련이 있어보입니다. titleCollapse를 false로 수정하고! 테스트! 윙? 잘되는데...? 왜 안막히는거지... 혹시 수정된 소스코드가 반영이 안되었나? 찾아봅니다. 반영 됐습니다.그럼 무엇이 문제일까? 문서를 자세히 읽어 봅니다. When a panel is used in a Ext.layout.container.Border, .. 2018. 8. 3.
비트연산자? 써야하나? 비트연산자 금지! 레거시 C, C++ 프로젝트를 보면 비트 플래그를 사용해서 연산하는 경우를 많이 볼 수 있다. 이런 레거시 프로젝트를 웹 어플리케이션으로 포팅하는 과정에서 그대로 비트 연산을 자바스크립트 측에서 구현하는 경우가 있는데, 자바스크립트는 기본적으로 비트 연산 속도가 느리다. 자바스크립트에서는 비트 연산 시 부동 소수점 숫자형을 정수형으로 변환 후 비트연산을 하고 다시 원래타입으로 되돌린다. 또한 비트연산은 하드웨어에 친근하고 속도가 빠른게 장점인데 자바스크립트에서의 비트연산은 하드웨어와 아무 상관이 없다. 그러므로 레거시 프로젝트를 포팅 시에는 이러한 연산은 서버 측에서 해야한다. 제발 2018. 8. 1.
switch문 Fall Through switch Fall Through 금지! switch Fall Through란? switch 문에서 case 내에서 의도적으로 break문을 생략하여 다음 case로 이동 시키는 방법 위의 방식은 의도적으로 사용할 때도 있다. 그럴 경우에는 무조건 주석을 달아줘야 한다. 하지만 실수로 break문을 생략한 경우를 직접 겪어보니 에러가 어디에서 발생하는지 정말 찾기 힘들었다. 그러므로, 사용하지 말자 제발 2018. 8. 1.
#반복문 #중요 #매우중요 #매우매우중요 프로그래밍은 반복문과 조건문, 2가지만 있으면 할 수 있다. 그만큼 중요한게 반복문 이다. 먼저 결론부터 얘기하겠다. for-in 사용하지 마 for-in을 제외한 반복문에 관한 문법은 모두 허용이다. 물론 통일성 있게 작성하면 더 좋고. 그럼 왜 사용하지 말라는 건가? for-in 반복문은 목적 자체가 객체의 속성 탐색이다. 그러므로 내부적으로 탐색 알고리즘이 일반 반복문과 다르다. 그리고 객체의 속성 탐색도 미리 배열 또는 객체로 색인을 구성해놓고 탐색하는 방식을 이용하라. 아! 그리고 한 가지 더! 기존에 컴파일러가 존재하는 환경에서 프로그래밍을 했다면 반복문의 탈출 조건을 사용할 때 메소드 또는 속성 length를 많이 사용하는데 이것도 캐싱하라. // C++에서는 굳이 필요없는 지역변수지만 자바.. 2018. 7. 28.
스코프 체인, 흑마법같은 자바스크립트에는 다른 언어(C, C++, Java, C#, Python, PHP)에는 없는 개념인 스코프 체인 이라는 개념이 있다. 처음 스코프 체인 개념을 봤을 때는 놀라웠다. 이런 편리성이라니! 하지만 편리함 뒤에는 역시나 어두운 면이 존재한다. 프로그래밍에는 마법 같은 일이란 없다. 마법 같이 보일 뿐이지 내가 항상 기억하는 문장이다. 개발자가 사용하기 더 편하게, 쉽게 해주는 메소드나 속성, 개념 등은 겉으로는 마법처럼 보인다. 와! 이런것도 지원해줘? 이게 되네? 하지만 결국 내부 코드를 들여다보면 마법 같은 일이란 없다. 스코프 체인도 그 개념 중 하나다. 잘못 사용하게 되면 성능 상 문제가 될 수 있는 개념 한가지만 기억하자. 제1활성 객체에 없는 변수나 객체는 캐싱해서 접근 하라. 단순 1.. 2018. 7. 27.
new 보다는 리터럴 객체를 생성하는 방법은 크게 생성자를 사용하는 방식과 리터럴 방식이 있다. 생성자를 이용한 방식 var obj = new Object(); 리터럴 형식을 이용한 방식 var obj = {}; 객체는 위의 두가지 방식의 성능 차이는 크게 나지 않는다. 그러나 배열의 입장에서는 다르다. 생성자 방식 보다 리터럴 방식이 더 빠르다. 또한 접근자를 사용하는게 더 빠르다 접근자 예제 var arr = []; for(var i =0; i 2018. 7. 27.