본문 바로가기
JavaScript/JavaScript

Javascript) 작성 방식, 자료형 (string, number, boolean, object, function, undefined)

by 박채니 2022. 5. 17.

안녕하세요, 코린이의 코딩 학습기 채니 입니다.

 

개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.


Javascript

- 웹 브라우저에서 많이 사용하는 인터프리터 방식의 객체지향 프로그래밍 언어

 

Javascript 작성 방식

① html 태그의 inline 이벤트 속성에 작성

<li onclick="alert('안녕');">html태그의 inline 이벤트 속성에 작성</li>

 

② 내부 script 태그 - head 태그 안, body 종료 태그 전

head 태그 안

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        ol>li {
            cursor: pointer;
        }
    </style>

    <script>
        // alert('123');   // 브라우져가 문서를 해석하면서 바로 실행!
        console.log('123');


        //함수 선언
        function foo() {
            console.log("foooooooooo");
        }
        //함수 호출
        foo();
    </script>
</head>

 

body 태그 종료 전

<body>
    <h1>Javascript</h1>

    <ol>
        <li onclick="alert('안녕');">html태그의 inline 이벤트 속성에 작성</li>
        <li>내부 script태그 - head 태그 안, body 종료태그전</li>
        <li>외부 script태그 - 현재 페이지에서 load</li>
    </ol>
    
    <script>
        console.log(456);
        foo();

        function bar() {
            console.log("baaaaaaaaaar");
        }
    </script>
</body>

 

③ 외부 script 태그 - 현재 페이지에서 load

// 스크립트 영역

function abc() {
    console.log("abc");
}

console.log("main js 실행..");

 

<script src="js/main.js"></script>

<script>
    abc();  //main.js에 선언된 함수 호출
</script>

 


Dynamic Typing

- Javascript에서는 대입된 값에 따라 변수의 자료형이 결정

 

HTML 코드

<body>
    <h1>자료형</h1>

    <button onclick="test1();">Dynamic Typing</button>
</body>

 

Javascript 코드

 

변수 선언 → let 키워드 사용

상수 선언 → const 키워드 사용

<script>
    function test1() {
        let k;      // 변수 선언
        k = 123;    // 값 대입
        console.log(typeof k, k);	//number 123

        k = '안녕';
        console.log(typeof k, k);	//string 안녕
    }
</script>

이렇게 변수의 자료형을 미리 지정해주지 않아도, 대입된 값에 따라 변수의 자료형이 결정되는 것을 확인할 수 있습니다.

 

상수

const s;	//'const' declarations must be initialized. 오류발생
s = '안녕';

상수는 상수 선언과 값 대입이 동시에 이루어져야 합니다.

 


자료형

- string

- number

- boolean

- object

- function

- undefined

 

HTML 코드

<body>
    <h1>자료형</h1>

    <button onclick="test2();">자료형</button>
</body>

 

Javascript 코드

 

☞ string

<script>
    function test2() {
        // string
        const s = 'Helloworld'; // 쌍따옴표/홑따옴표 가능

        // s = "ByeWorld"; // Uncaught TypeError: Assignment to constant variable.
        console.log(typeof s, s);
    }
</script>

상수는 값 변경이 불가하므로 s = "ByeWorld"; 시 오류가 발생합니다.

typeof를 통해서 상수 s의 자료형을 확인해보니 string으로 확인 되며, 쌍따옴표/홑따옴표 모두 사용 가능합니다.

 

 

☞ number

//number
// 정수/실수 구분하지 않음
const a = 100;
console.log(typeof a, a);
console.log(10 / 3);

number 타입은 정수/실수에 대한 구분이 없으며, typeof로 확인해보니 number 타입으로 확인됩니다.

또한 정수/실수에 대한 구분이 없기 때문에 연산 결과 그대로가 출력되는 것을 확인할 수 있습니다.

 

 

☞ boolean

// boolean
// true, false
const bool = true;
console.log(typeof bool, bool);

const bool2 = !true;
console.log(typeof bool2, bool2);

boolean 타입은 true, false의 값을 가지며, typeof으로 확인해보니 boolean 타입으로 확인됩니다.

또한, not (!) 연산자를 통해 boolean의 값을 뒤집는 것도 가능한 것으로 확인됩니다.

 

 

☞ object

생성자 함수 호출

// obejct
const today = new Date();   // 생성자 함수 호출 -> 객체 생성
console.log(typeof today, today);

생성자 함수를 호출하여 객체를 생성해 date를 받아왔으며, object 타입으로 확인됩니다.

 

배열

// 배열
const arr = [1, 2, 3];
console.log(typeof arr, arr);
console.log(arr[0], arr[1], arr[2]);

배열 또한 object 타입으로 확인되며, 인덱스를 통해서 요소를 가져올 수 있습니다.

 

요소

// 요소 (속성명:속성값) - 리터럴로 객체 생성
const obj = {
    name : '홍길동',
    n : 123.456,
    married : false,
    favoriteNums : [9, 12, 34],
    friend : {
        name : '고길동',
        age : 25
    }
};
console.log(typeof obj, obj);
console.log(obj.name);
console.log(obj.n);
console.log(obj.married);
console.log(obj.favoriteNums);
console.log(obj.friend);

요소 또한 object 타입으로 확인됩니다.

 

☞ function

// function
function foo() {
    console.log('foo')
}
console.log(typeof foo, foo);

함수 자체를 호출한 것이므로 'foo'가 출력되는 것이 아닌 foo함수 코드가 출력됩니다.

 

 

☞ undifined

// undifined
let k;
console.log(typeof k, k);

let m = '안녕하세요';
m = undefined;  // 값 제거 용

실제 값이 대입 되지 않았기 때문에 타입 또한 undefined, 값 또한 undefined입니다.

undefined를 이용하여 값을 초기화하는 용도로도 사용할 수 있습니다.