기본 콘텐츠로 건너뛰기

중 상급자가되기위한 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 에서 변수를 비교할 때 암시적 변환이 이루어진다. ===와 !==에서 비교할 때 값과 수식의 형태를 모두 체크하지만 ==와 !=는 값 밖에 확인하지 않는다.

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






    댓글

    이 블로그의 인기 게시물

    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 리눅스 시스템 내에 대량의 파일을 복사할 때도 사용하면 편하다...

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

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

    buddy

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