기본 콘텐츠로 건너뛰기

중 상급자가되기위한 JavaScript 【지식 편]

qiita : http://qiita.com/KENJU/items/c7fad62a12cc2809b507?utm_source=Qiita%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9&utm_campaign=a25a5e9683-Qiita_newsletter_166_07_22_2015&utm_medium=email&utm_term=0_e44feaa081-a25a5e9683-32972029

그대로 복붙 해도 상관 없지만 나도 좀 보면서 정리 해야 되니까 조금씩 정리.

1. Basic Tips

Index

  • 1-1. 글로벌 변수를 남용하지 않는다.
  • 1-2. for 루프
  • 1-3. 암시 적 변환을 피하기

1-1. 글로벌 변수를 남용하지 않는다.,
  • 타사 플러그인을 읽을 때 변수의 충돌
  • 팀 구성원이 작성한 코드와 이름 충돌
  • 옛날 쓴 자신의 코드에서 사용한 변수와 충돌

대책 : var
JavaScript 는 var  없이 정의된 변수는 전역 변수로 스켄된다.
function speakOut() { 
  // global variable 
  global = "Hello from global"; 

  // local variable 
  var local = "Hello from local"; 

  console.log(global); 
  console.log(local); 
} 

speakOut(); 

console.log(global); 
console.log(local);

대책 : 네임 스페이스를 사용
// Object for name space 
var myApp = {}; 

myApp.name = "My First JavaScript App" ;

대책 : 클로저를 이용.
(function(){
  maybe_global = "Hello from global?"; // varを忘れるとグローバル
  var local = "Hello from local";

})();

console.log(maybe_global);
console.log(local);

모범 사례 : 단독 var 패턴.
반드시 함수의 시작 부분에서 var 문장을 쓰면 잘못된 로컬 변수로 var을 선언하는것을 방지 할 수 있다.

  • 습관화 하여 로컬 변수 var 붙여 잊어을 방지하기
  • 로컬 변수 나 함수 자체의 전체적인 가독성 향상
  • 코드 량이 적다
  • function login(){
        var userId,
            userPasswd,
            date,
            sessionId,
            errorMessage = [],
            status = {};
    
        ...
    
    }


    1-2. for 루프

    일반적인 for 루프
    for ( var i = 0; i < myarray.length; i++){
        console.log(i);
    }

    고성능 JavaScript"(O'Reilly) 를 참고하여 조금더 빠르게 변경 할 수 있다.
    실제 글에서는 소규머 서비스에서는 별 차이를 못느낀다고 하며 대규모 서비스개발시에 도움이 될거라고...
    for ( var i = 0, len = myarray.length; i < len; i++){
        console.log(i);
    }

    루프에서 DOM 요소를 추가하거나 제거하는등 길이가 바뀔 때
    var문장을 밖에서 선언해 두면 좋다.
    function myFunc(){
    
        var i = 0,
            len,
            myarray = [];
    
        //...
    
        for ( i = 0, len = myarray.length; i < len; i++){
            // ...
        }
    
    }

    for문을 더 빨리 하려면
    변수의 수를 줄이고 카운트 방식에서 카운트 다운방식으로 하면 더 빠르게 할 수 있다.
    var i, 
        myarray = [];
    
    for ( i = myarray.length; i--;){
        //...
    }


    1-3. 암시적 변환을 피하자

    var zero = 0;
    
    // pattern A
    
    if(zero === false){
        // ...
    }
    
    // pattern B
    
    if(zero == false){
        // ...
    }

    v for문을 더 빨리 하려면
    === 와 ==는 다르다. !== 와 != 도 다르다.

    JavaScript 에서 변수를 비교할 때 암시적 변환이 이루어진다. ===와 !==에서 비교할 때 값과 수식의 형태를 모두 체크하지만 ==와 !=는 값 밖에 확인하지 않는다.

    그래서... 가급적이면 ===와 !==를 사용하면 좋다고 한다.






    댓글

    이 블로그의 인기 게시물

    사원으로 가면 암걸리는 회사.

    (1) 어떠한 일이 벌어지던 지휘 명령 체계를 반드시 지키도록 강요한다. 의사 결정을 앞당기기 위한 샛길을 허락하지 않는다. (2) 간단하게 해결할 수 있는 안건도 위원회에서 검토하게 하며, 위원회는 가능한 크게 만든다. 최소 5명 이상. (3) 될 수 있는 한 자주 회의를 열도록 유도한다. (4) 이전 회의에서 정해진 것을 되풀이해서 검토하도록 유도한다. (5) 중요한 업무가 있어도 회의를 열게 한다. (6) 문서의 형식, 제출 일자, 오탈자를 집요하게 추궁한다. (7) 될 수 있는 한 문서의 양을 늘린다. (8) 업무 승인 수속을 될 수 있는 한 복잡하게 한다. 제 아무리 간단한 일에도 3명 이상의 승인을 필수가 되도록 유도한다. (9) 조직내 권한 문제를 집요하게 추궁한다. 상층부의 허락을 받지 않고 독단으로 해결해도 되는 지 끊임없이 지적한다. (10) 업무할당을 할 경우, 항상 중요도가 낮은 업무에 집중하도록 유도한다. (11) 새로운 직원에게 경험을 쌓을 시간과 자원을 주지 않는다.

    buddy

    https://buddy.works/ 깃 서비스가 엄청나게 많아 지고 있는것 같다. 최근에 gogs 도 그렇고 예전에 쓰던 github clone 들... 찾아보면 많을 것 같다. 이번에 페이스북에 광고로 올라온 buddy도 그렇다. 1프로젝트당 1$ 라는데... 기회가 되면 써 봐야지 -.-

    linux tar.gz comp

    ftp로 파일을 전송하는데 잡다한 파일들이 너무 많아서 (약 2만개) 전송에 시간이 너무 오래 걸리더라. 처음에는 scp로 복사 하려고 했는데 잘 안되서 했더니 엉망...; 그냥 압축해서 한번에 전송해서 수십분을 아껼 수 있었다. 유형 tar => 파일을 하나로 모은다. gzip => 압축한다. tar.gz => 하나로 모아서 압축한다. 압축/해제 tar로 압축 => tar -cvf temp.tar temp tar 압축풀기 => tar -xvf temp.tar tar.gz 압축하기 => tar -zcvf temp.tar.gz temp tar.gz 압축풀기 => tar -zxvf temp.tar.gz 리눅스 시스템 내에 대량의 파일을 복사할 때도 사용하면 편하다...