전체 글
-
최소한의 전역변수 사용JavaScript/JS 2018. 6. 12. 19:57
전역변수 사용을 최소화하는 방법 중 하나는 애플리케이션에서 전역변수 사용을 위해 다음과 같이 전역변수 객체 하나를 만들어 사용하는 것이다. (더글라스 크락포드의 제안) var MYAPP = {}; MYAPP.student = {name: 'Kim',gender: 'male'};console.log(MYAPP.student.name); 혹은 즉시 실행 함수로 함수 안에 가둬 사용한다. (라이브러리 등에서 많이 사용되는 방법)즉시 실행 함수는 즉시 실행되고 그 후 전역에서 사라진다. (function() {var MYAPP = {}; MYAPP.student = {name: 'Kim',gender: 'male'};console.log(MYAPP.student.name);}());
-
[JS] MemoizationJavaScript 2018. 2. 20. 19:24
[Memoization] for문은 메모리 낭비가 심하다.한번 사용한 값은 저장하여 메모리를 효율적으로 사용해보자.아래는 클로저를 사용하고, 재귀함수를 사용하였다.재귀함수는 함수가 자기 자신을 호출하는 것을 말한다. // Memoization var _commonctrl = (function() { var save = {}; var fact = function(number) { if(number > 0) { var saved = save[number - 1] || fact(number - 1); //1. save object에는 현재 저장값이 없으므로 undefined를 반환, 그러므로 saved에는 fact(number - 1)가 저장; var result = number * saved; //2. re..
-
[JS] event.stopPropagation()로 버블업 막기JavaScript 2018. 2. 8. 11:25
이미지를 보면 마크업은 li > a 로 되어있다. li에 focus, mouseenter, mouseleave 등의 이벤트가 적용되어 있었다. 그리고 li의 자식인 a에도 이벤트가 적용되어 있었는데 제대로 동작되질 않아 이슈가 있었다. li(부모)의 클릭 이벤트가 전파(버블업)되어 a(자식)에게 까지 영향을 끼쳐 a(자식)의 이벤트가 씹히게 된 것이다. 그래서 li(부모)에 e.stopPropagation(); 을 사용하여 부모 요소로부터의 이벤트 전파를 중지 시켜줌으로서 이슈는 해결되었다. event.stopPropagation()와 event.preventDefault();는 항상 기억해주는 것이 좋겠다. event.stopPropagation() 을 이해하기 위해서는 우선 HTML 상에서 사용자 이..