본문 바로가기

TIL/JavaScript

[JavaScript] JavaScript개요, 변수와 자료형, 데이터 입출력

JavaScript란?

  • HTML이 웹 문서의 뼈대 역할, CSS가 그 뼈대를 꾸며주는 역할이라면 자바스크립트는 생동감을 불어넣기 위해 만들어진 프로그래밍 언어이다.
  • 자바스크립트로 작성한 프로그램을 스크립트(script)라고 부르고, 스크립트는 웹 페이지의 HTML안에 작성 가능하며 웹페이지 로드 시 자동으로 실행 된다.
  • 브라우저에는 '자바스크립트 가상 머신'이라 불리는 엔진이 내장되어 있다.

 

JavaScript의 실행방식

  • 엔진이 스크립트를 읽고(파싱) 읽어들인 스크립트를 기계어로 전환(컴파일)하면 기계어로 전환 된 코드가 실행된다.
  • 전체를 해석해놓은 컴파일 언어와는 차이가 있다.

 

JavaScript로 수행할 수 있는 기능

  • 페이지에 새로운 HTML 추가
  • 기존 HTML과 스타일 수정
  • 마우스 클릭 및 이동, 키보드 키 누름 등의 사용자 행동에 반응
  • 네트워크를 통해 원격 서버에 요청(Ajax 기술 등)
  • 쿠키(Cookie) 사용
  • 클라이언트 측에 데이터 저장(Local Storage)

 

JavaScript를 사용하는 이유

  • HTML/CSS와 완전히 통합할 수 있으며 모든 주요 브라우저에서 지원하고, 기본 언어로 사용되기 때문이다.
  • 오늘날 자바스크립트는 브라우저 환경에서 가장 널리 사용 되는 언어이며 지금은 서버단 등 다양한 환경에서도 사용 된다.

 

자바스크립트 작성 방법

 

1. internal 방식

  • script 태그 영역에 작성해서 실행되게 하는 방법으로 head 태그, body 태그 내에 작성 가능하다.
  • type="text/javascript"는 HTML4에서는 필수였으나 지금은 필수가 아니다.
  • language 속성은 자바스크립트가 기본 언어이므로 작성할 필요가 없다.
<script>
        //JavaScript 한 줄 주석
        /*
            JavaScript
            여러 줄 주석 
            줄 바꿈이 있다면 세미콜론 자동 삽입
        */
        console.log('Hello!')
        console.log('JavaScript!')
    </script>

 

2. external 방식

  • 별도의 js 파일로 작성해서 가져다 사용하는 방법
  • 스크립트가 길어지면 별도의 js 파일로 작성하는 것이 좋은데 이는 브라우저의 캐싱으로 다시 다운 받을 필요가 없어지기 때문이다.
<script src="../resources/js/sample.js"></script>

 

3. inline 방식

  • 태그에 직접 소스 코드를 작성해서 실행 되게 하는 방법
<button onclick="alert('버튼 클릭 확인');">경고창 출력</button>
<button onclick="console.log('버튼 클릭 확인');">콘솔창 출력</button>

경고창 출력 버튼을 누르면 alert창이 뜬다.

콘솔창 출력 버튼을 누르면 콘솔창에 출력된다. 숫자는 내가 누른 수 만큼 표시


변수 선언과 대입

<script>
        // 변수 선언
        let str;
        // 대입
        str = '변수';
        // alert로 출력
        // alert(str);

        // 선언과 대입 동시에
        // 같은 이름의 변수 재선언 불가
        // let str = '이름';
        let name = '이름';
        console.log(name);
    </script>

 

변수 명명 규칙

  • 문자, 숫자, '$', '_' 사용 가능
  • 첫 글자는 숫자가 될 수 없음
  • 예약어 사용 불가
  • 카멜 표기법 사용
<script>
        // 유효한 변수명
        let userName;
        let number1;
        let number_2;
        let number$3;

        // 유효하지 않은 변수명
        //let 1number;
        //let number#4;

        // 유효하지만 권장하지 않음
        let 변수 = '변수입니다';
        console.log(변수);
    </script>

 

상수 선언과 대입

<script>
        // const는 재할당 할 수 없다
        const PI = 3.141592;
        // 재할당 시 오류 발생
        //PI = 3.14;
        console.log(PI);

        // 선언 시 할당해야 함
        //const NUM;
        //NUM = 123;
    </script>

 

자바스크립트의 자료형

  • 자바스크립트는 느슨한 타입(loosely typed) 언어, 혹은 동적 (dynamic) 언어이다.
  • 변수의 타입을 미리 선언할 필요가 없으며, 타입은 프로그램이 처리 되는 과정에서 자동으로 파악 된다.
  • 같은 변수에 여러 타입의 값을 넣을 수 있다는 의미이다.

 

원시 자료형(primitive type)

- 원시 자료형이 할당될 때에는 변수에 값(value) 자체가 담긴다.

  • number
  • string
  • boolean
  • null
  • undefined
<script>
        // 숫자 : 정수 및 실수
        let age = 20;
        let height = 171.5;

        console.log(age);
        console.log(height);

        // Infinity : 무한대
        console.log(1/0);
        console.log(Infinity);

        // NaN : Not a Number
        console.log('문자'/2);
        console.log(NaN);

        // 문자열 : 따옴표로 묶음
        // 문자 자료형은 따로 없음
        let str2 = 'single';
        let str3 = "double";
        
        console.log(str2);
        console.log(str3);

        // 논리값
        let bool = true;
        let bool2 = 1 == 2;

        console.log(bool);
        console.log(bool2);

        // null
        // 존재하지 않는 값, 알 수 없는 값, 비어 있는 값
        let nullValue = null;

        console.log(nullValue);

        // undefined
        // 값이 할당 되지 않은 상태
        let undef;
        console.log(undef);
        // 명시적 undefined
        let undef2 = undefined;
        console.log(undef2);
    </script>

 

참조 자료형(reference type)

- 원시 자료형이 아닌 것
- 참조 자료형이 할당 될 때는 보관함의 주소(reference)가 담긴다.

  • Array
  • Object
  • function
 <script>
        // 배열
        let arr = [1, 2, 3, 4, 5];
        console.log(arr);

        // 객체
        let user = {
            name : "홍길동",
            age : 30,
            id : "user01"
        };
        console.log(user);
        console.log(user.name);
        console.log(user.age);
        console.log(user.id);
    </script>

 

ECMAScript 6

- ES6 및 ECMAScript 2015라고도 하며 JavaScript의 두 번째 주요 개정판(2015년)을 말함

 

let, const

- ES5까지는 모든 변수를 var라는 예약어로 선언했으나 ES6 문법에서는 let, const를 사용한다.
- ES5까지는 "전역 범위"와 "함수 범위"라는 두 가지 유형의 범위만 있었지만 ES6에서는 "블록 범위" 변수(및 상수)를 제공한다.

<script>
        // 선언 범위 테스트
        var x = 1;
        let y = 2;
        console.log('블럭 밖 x = ' + x);
        console.log('블럭 밖 y = ' + y);
        {
            var x = 3;
            let y = 4;
            console.log('블럭 안 x = ' + x);
            console.log('블럭 안 y = ' + y);
        }
        console.log('블럭 밖 x = ' + x);
        console.log('블럭 밖 y = ' + y);
        
        /* var는 블록 범위를 가질 수 없고
        let은 블록 범위를 가질 수 있다.
        var는 블록 내부의 변수를 다시 선언하면
        블록 외부의 변수도 다시 선언되는 문제가 있으나
        let은 블록 내부의 변수를 다시 선언 해도
        블록 외부의 변수는 다시 선언 되지 않는다.
        */ 

        /* loop 블록 안의 변수로 사용했을 때
        let의 경우 loop 블록 범위와 전역 범위가 구분 되지만
        var의 경우 loop 블록 범위와 전역 범위가 구분 되지 않는다.*/
        var i = 5;
        for(var i = 0; i < 10; i++) {}
        console.log("i = " + i);

        let j = 5;
        for(let j = 0; j < 10; j++) {}
        console.log("j = " + j);
    </script>

 

console.log()로 개발자 도구 콘솔 화면에 출력하기

- 개발자 도구 콘솔 화면에 출력을 하고자 할 때 사용하며, 주로 디버깅 시 사용 된다.

    <script>
        console.log('콘솔 화면에 출력하기');
    </script>

 

alert()로 메세지 출력하기

- 사용자가 확인 버튼을 누를 때까지 메세지를 보여주기 위해 사용 한다.

    <script>
        alert('alert에 메시지 출력하기');
    </script>

 

confirm()을 이용한 데이터 입력

- 어떤 질문에 "예/아니오"의 결과를 얻을 때 사용한다.
- 확인 버튼과 취소 버튼이 나타나며 확인 버튼 클릭 시 true, 취소 버튼 클릭 시 또는 ESC 키를 누를 시 false를 리턴한다.

    <script>
        let result = confirm('배고프면 확인, 아니면 취소를 누르세요');
        console.log('result : ' + result);
    </script>

확인 누르면 true
취소 누르면 false

 

prompt()를 이용한 데이터 입출력

- 텍스트 필드와 확인/취소 버튼이 있는 대화상자 출력하고 입력한 메세지 내용을 리턴 값으로 돌려 받는다.
- 취소 버튼 클릭시 null을 리턴하며, 두 번째 인자로 default값 설정도 가능하다.

    <script>
        let userName = prompt("당신의 이름은 무엇인가요?");
        console.log("userName : " + userName);

        // 두 번째 인자로 default 값 설정
        let age = prompt('당신의 나이는 몇 살인가요?', 20);
        console.log("age : " + age);
    </script>

기본값을 20으로 설정해놓음

 

alert, confirm, prompt가 띄운 창이 떠 있는 동안은 스크립트 동작이 일시정지하며 사용자가 창을 닫기 전까지는 나머지 페이지와 상호작용이 불가하다.
해당 창들은 브라우저마다 다른 모양을 가지며 개발자가 수정 불가한 요소이다.

'TIL > JavaScript' 카테고리의 다른 글

[JavaScript] DOM(Document Object Model)  (0) 2022.02.21
[JavaScript] 숫자, 문자, 날짜 다루기  (0) 2022.02.21
[JavaScript] 객체  (0) 2022.02.20
[JavaScript] 함수-2, 배열  (0) 2022.02.19
[JavaScript] 형변환, 연산자, 함수  (0) 2022.02.17