Programming/Web Programming2017. 7. 15. 04:58

JavaScript #2


연산자


대입 연산자

- =: 우항의 값을 좌항의 변수에 대입

비교 연산자

1.     ==: 동등 연산자. 좌항과 우항을 비교해 값이 서로 같으면 True, 다르면 False

2.     ===: 일치 연산자. 좌항과 우항이 모든 부분에서 정확하게 같으면’ True, 아니면 False

예를 들어, alert(1==’1’) True라고 출력되지만 alert(1===’1’) False가 출력. 같은 수를 표현하고 있지만 데이터 형이 다르기 때문에 일치 연산자에서는 False를 반환.

일반적으로 동등 연산자(==) 보다 일치 연산자(===)을 사용할 것을 권함. 다음 예시를 보자.


참고로 null은 값이 없음을 명시적으로 표시한 것이고, undefined는 값이 없는 상태이다.

3.     !=: 동등 연산자와 반대 결과를 출력한다.

4.     !==: 일치 연산자와 반대 결과를 출력한다.

5.     >: 좌항이 우항보다 크면 참, 그렇지 않다면 거짓이다. ‘<’ >의 반대이다.

6.     >=: 좌항이 우항보다 크거나 같으면 참, 그렇지 않다면 거짓이다. 마찬가지로 ‘<=’는 반대이다.

7.     &&: 좌항과 우항이 모두 참일 때 참이 된다. (AND)

8.     ||: 좌항과 우항 중 하나가 참일 때 참이 된다. (OR)

9.     !: ‘!’는 부정을 의미한다. , True 혹은 False를 역전시키는 연산자이다. (NOT)

 

조건문

1.     If: if 뒤의 괄호에 조건이 오고, True라면 조건이 담겨진 괄호 다음의 중괄호 구문이 실행됨

2.     Else: if 문 안에 담긴 조건문의 값이 False일 때 중괄호 안의 코드가 실행된다.

3.     Else if: 이전 if문의 판별식의 결과가 False일 때 다시 한 번 조건을 걸어 참과 거짓을 판결해 참일 때 중괄호 안의 코드를 실행한다.

조건문이 참과 거짓을 판별할 때 판별식의 결과가 ‘0’이면 거짓, ‘0’이 아닌 거의 모든 값을 참으로 인식한다. 0 이외에 False로 간주되는 것들에는 ’’(빈 문자열, undefined, 값이 할당되지 않은 변수, null, NaN이 있다.

 

반복문


1.     While: 조건문을 만족시키는 동안 중괄호 안의 코드를 계속 반복한다.

2.     For: 기본 구조는 for(초기문;조건문;증감식){ 코드 } 이다. 초기문은 for문에 최초에 진입할 때 한 번만 실행된다. 이후 조건문을 판별하고 참이면 코드를 모두 실행하고, 증감문 실행 후 다시 판별, 참이면 다시 코드를 실행하며 거짓이면 for문을 탈출한다.

3.     Break: 반복문을 탈출하는 역할을 한다.

4.     Continue: 반복문의 처음으로 이동한다. 반복문 안의 코드를 즉시 중단하고 반복은 지속되게 할 때 사용한다. for문의 경우는 증감식으로, while문의 경우 판별식으로 이동한다.

 

함수


function add( var a, var b ){

           alert(a);

           alert(b);

           return a+b;

}

함수를 정의할 때 function 뒤에 함수 이름(add), 소괄호 안에는 전달하는 인자를 써 넣는다. 각각의 인자는 콤마(,)로 구분짓는다. 함수가 호출되면 중괄호 안의 코드(alert(a); alert(b);)를 실행하고 반환값(a+b) return 한다.

 

배열


여러 개의 데이터를 하나의 변수에 담음. 기본 구조는 다음과 같음.


var 배열명 = [‘첫 번째 요소’, ‘두 번째 요소’, …]

첫 번째 요소는 0 번째 인덱스이다. n번째 인덱스에 있는 요소는 n+1번째 요소인 셈. member라는 배열의 n번째 요소를 alert하는 명령은 alert(member[n-1]); . n-1을 감싸는 것은 대괄호임에 주의.


배열 요소 추가/제거/정렬

1.     Push: 배열의 맨 끝에 원소를 추가

2.     Concat: 배열의 맨 끝에 여러 개의 원소를 추가

3.     Unshift: 배열의 시작점에 원소를 추가

4.     Splice: 배열의 첫 번째 인자에 해당하는 원소부터 두 번째 인자에 해당하는 원소의 숫자만큼 값을 배열로부터 제거한 후 리턴, 세 번째 인자부터 전달된 인자들을 첫 번째 인자의 원소 뒤에 추가.


5.     Shift: 배열의 첫 번째 원소를 제거

6.     Pop: 배열의 마지막 원소를 제거

7.     Sort: 배열을 정렬

8.     Reverse: 배열을 역순으로 정렬

 

객체


var level = {‘BinZIP’:1, ‘Newbie’:1, ‘ZzangHacker’:999};

위와 같이 객체를 선언할 수 있다. BinZIP key가 되고, 1 value에 해당함. 아래와 같이 객체를 만들 수도 있음.


var level = new Object();

level[‘BinZIP’] = 1;

level[‘Newbie’] = 1;

level[‘ZzangHacker’] = 999;

for문은 in 뒤에 따라오는 배열의 key 값을 in 앞의 변수에 담아서 반복문을 실행. 반복문이 실행될 때 변수 값에 key 값이 순차적으로 할당됨.

객체에는 객체를 담을 수도, 함수를 담을 수도 있음. 아래 코드를 참고.


var grade = {

           'list': {'BinZIP':1,'Newbie':1,'ZzangHacker':999},

           'show': function(){

                     for(var name in this.list){

                                alert(name+':'+this.list[name]);

                     }

           }

};

grade.show();

실행 결과는 다음과 같음.





 

모듈


객체지향형 프로그래밍이 등장하게 된 배경은 코드의 재활용성을 높이고 유지보수를 쉽게 하기 위해서라고 할 수 있음. 이런 목적을 위해 다양한 기법들이 사용되는데, 그 중 하나가 코드를 여러 개의 파일로 구분하는 것임. 이를 통해서 얻을 수 있는 효과는 다음과 같음.

ð  자주 사용되는 코드를 별도의 파일로 만들어 필요할 때마다 재활용 가능

ð  코드를 개선하면 이를 사용하는 모든 애플리케이션의 동작에 적용

ð  코드 수정 시에 필요한 로직 빠르게 찾을 수 있음

ð  필요한 것만 로드해 메모리 낭비를 줄임

ð  한 번 다운로드 된 모듈은 웹 브라우저에 의해 저장되기 때문에 동일한 로직을 로드 할 때 시간과 네트워크 트래픽 절약 가능. 이는 웹 브라우저에만 해당되는 장점.

모듈은 라이브러리, C언어 및 다른 여러 언어의 헤더 파일과 비슷한 개념으로 생각할 수 있음. 라이브러리는 잘 정렬된 코드의 집합이라고 생각하면 됨

모듈을 로드하기 위해서는 <head> 범위 안에 다음과 같이 작성해줌.


<script scr=”모듈의 주소”></script>

 

node.js에서 모듈 로드

모듈을 로드하는 방법은 호스트의 환경에 따라서 달라짐. 아래 그림 참고(출처: 생활코딩 JavaScript 기본 객체 – node.js에서의 모듈의 로드)


 

라이브러리 사용

모듈과 라이브러리를 사용해야 하는 이유를 단적으로 보여주는 예시이다.


<!DOCTYPE html>

<html>

<head>

    <script src="https://code.jquery.com/jquery-1.11.0.min.js"></script>

</head>

<body>

    <ul id="list">

        <li>empty</li>

        <li>empty</li>

        <li>empty</li>

        <li>empty</li>

    </ul>

    <input id="execute_btn" type="button" value="execute" />

    <script type="text/javascript">

     $('#execute_btn').click(function(){

        $('#list li').text('coding everybody');

     })

    </script>

</body>

</html>

위 코드는 유명 라이브러리인 jQuery를 사용해 버튼을 클릭했을 때 ‘Coding Everybody’ 화면의 empty가 있는 자리에 출력하는 예시이다. 동일한 코드를 jQuery 라이브러리를 사용하지 않고 구현한 코드는 다음과 같다.


<!DOCTYPE html>

<html>

<body>

    <ul id="list">

        <li>empty</li>

        <li>empty</li>

        <li>empty</li>

        <li>empty</li>

    </ul>

    <input id="execute_btn" type="button" value="execute" />

    <script type="text/javascript">

    function addEvent(target, eventType,eventHandler, useCapture) {

        if (target.addEventListener) { // W3C DOM

            target.addEventListener(eventType,eventHandler,useCapture?useCapture:false);

        } else if (target.attachEvent) {  // IE DOM

            var r = target.attachEvent("on"+eventType, eventHandler);

        }

    }

    function clickHandler(event) {

        var nav = document.getElementById('list');

        for(var i = 0; i < nav.childNodes.length; i++) {

            var child = nav.childNodes[i];

            if(child.nodeType==3)

                continue;

            child.innerText = 'Coding everybody';

        }

    }

    addEvent(document.getElementById('execute_btn'), 'click', clickHandler);

    </script>

</body>

</html>

 




'Programming > Web Programming' 카테고리의 다른 글

JavaScript Basic #4  (0) 2017.07.18
JavaScript Basic #3  (0) 2017.07.16
JavaScript Basic #1  (0) 2017.07.13
CSS #2  (0) 2017.07.12
CSS #1  (0) 2017.07.12
Posted by BinZIP