기본 콘텐츠로 건너뛰기

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

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






    댓글

    이 블로그의 인기 게시물

    mac os + perl catalyst

    맥 엘... 머를 사용하고 있다. 펄은 최신버전이 설치 되어 있다. cpan 모듈부터 설치한다. $ cpan App::cpanminus 바로 스마트시디 설치한다. $ https://github.com/cxreg/smartcd 그런데 zsh 쓰고 있어서 source 하면 터미널이 튕겨 버린다. 이렇게 하면 됨. $ source $HOME/.smartcd/lib/core/smartcd ( https://github.com/cxreg/smartcd/issues/25) 깃에 연동해야 하니까 ssh 키도 만든다. $ ssh-keygen 그런데 문제가 생기기는 한다... ivalid version format (version required) at /perl5/lib/perl5/Module/Runtime.pm line 386. BEGIN failed--compilation aborted at /perl5/lib/perl5/Catalyst/ScriptRunner.pm line 2. Compilation failed in require at Web/script/web_server.pl line 7. BEGIN failed--compilation aborted at Web/script/web_server.pl line 7. 뭐 대충 이런건데..... Moose 업데이트 하면 된다. cpanm Moose 이 때 PATH 경로안에  Moose 가 포함 되어 있어야 한다. 그냥 cpan 설치 할 때 moose도 포함 시켜서 한번에 인스톨하면 편함. 이제 맥에 포스트그래스만 설치하면 되는데...

    전자정부 이클립스 스프링 부트

      1. 전자정부 이클립스 IDE 다운로드 2. 압축 해제후 실행.  Template Project 만들기. (아직은 Single 뿐이다.)