JavaScript Basics

JavaScript์˜ ๊ธฐ๋Šฅ

  • HTML & CSS

    • Web ๋ฌธ์„œ์˜ ๊ตฌ์กฐ์™€ ์™ธํ˜•์„ ์ •์˜

  • JavaScript

    • ๋ฌธ์„œ์˜ ๊ธฐ๋Šฅ์„ ์ •์˜

ES2015 (ES6)

  • JavaScript์˜ ๊ณ ์งˆ์ ์ธ ๋ฌธ์ œ๋“ค์„ ๋งŽ์ด ํ•ด๊ฒฐํ•œ ES2015๋ฅผ ์ง€๋‚˜ ํ˜„์žฌ ES2019๊นŒ์ง€ ๋ฐœํ‘œ

Vanilla JS (์ˆœ์ˆ˜ํ•œ JavaScript)

  • Cross browsing, ๊ฐ„ํŽธํ•œ ํ™œ์šฉ ๋“ฑ์„ ์œ„ํ•ด ๋งŽ์€ library๋“ค์ด ๋“ฑ์žฅ (๋Œ€ํ‘œ์ ์œผ๋กœ jQuery)

  • ์ตœ๊ทผ ํ‘œ์ค€ํ™”๋œ browser, ES6 ์ดํ›„์˜ ๋‹ค์–‘ํ•œ ๋„๊ตฌ์˜ ๋“ฑ์žฅ์œผ๋กœ ์ˆœ์ˆ˜ JavaScript ํ™œ์šฉ์˜ ์ฆ๋Œ€

Browser์—์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ

  • ์ „์—ญ ๊ฐ์ฒด window

    • DOM ์กฐ์ž‘

    • BOM ์กฐ์ž‘

V8 engine์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ Node.js

JavaScript์˜ ํŠน์ง•

  1. Script ์–ธ์–ด์ด๋‹ค

    • Interpreter๋ฅผ ํ†ตํ•ด ๋ฐ”๋กœ ์‹คํ–‰๋œ๋‹ค

    • Data type, type casting ์ˆ˜์›”

    • ์†๋„๊ฐ€ ๋А๋ฆผ

    • ์‹คํ–‰ ํ™˜๊ฒฝ์— ์ œํ•œ์„ ๋ฐ›์Œ

      • JavaScript Interpreter ๊ฐ€ ์„ค์น˜๋˜์–ด์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ๋งŒ ์ž‘๋™ํ•จ

  1. ํ•จ์ˆ˜ํ˜• ์–ธ์–ด์ด๋‹ค

    • ํ•จ์ˆ˜๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ํ•˜๋Š” ๋ฐฉ์‹

    • ์„ ์–ธ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ

      • HTML ์š”์†Œ๋ฅผ ๋™์ ์œผ๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

    • 1๊ธ‰ ํ•จ์ˆ˜

      • ํ•จ์ˆ˜ ์ž์ฒด๋ฅผ data ์ฒ˜๋Ÿผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

    • ๋ณ€์ˆ˜์˜ ์œ ํšจ ๋ฒ”์œ„ == ํ•จ์ˆ˜์˜ ์œ ํšจ ๋ฒ”์œ„

  1. Java์™€๋Š” ์ „ํ˜€ ๋‹ค๋ฅธ programming ์–ธ์–ด์ด๋‹ค

    • Netscape ์‚ฌ์—์„œ ๋งˆ์ผ€ํŒ…์„ ๋ชฉ์ ์œผ๋กœ Java ๋ผ์ด์„ผ์Šค๋ฅผ ๋ฐ›์•„ ์‚ฌ์šฉ

    • JavaScript == ECMA-262

  1. ์ดˆ๋ณด์ ์ธ ์–ธ์–ด๊ฐ€ ์•„๋‹ˆ๋‹ค

    • ํ•™์Šต ์‹œ์ž‘ ์ดˆ๊ธฐ์—๋Š” ์‰ฝ์ง€๋งŒ ๋ณต์žกํ•œ ์„œ๋น„์Šค ๊ตฌ์ถ•์— ์‚ฌ์šฉ๋ ๋งŒํผ ๊ฐ•๋ ฅํ•จ

  2. Web ํ‘œ์ค€์ด๋‹ค

    • HTML5: HTML5 + CSS3 + JavaScript

    • HTML5์˜ JavaScript์— ๋Œ€ํ•œ ์˜์กด๋„๊ฐ€ ๋†’์Œ

JavaScript๋Š” ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ ํ•ฉํ•˜๋‹ค!!!

Pros of JavaScript

  1. Text editor์™€ web browser๋งŒ ์žˆ์œผ๋ฉด programming ๊ฐ€๋Šฅ

  2. Data type ๋ฐ type-casting์ด ์‰ฌ์›Œ ์‰ฝ๊ฒŒ ํ•™์Šตํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

  3. Compile ๊ณผ์ •์„ ๊ฑฐ์น˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ž‘์„ฑํ•œ ์ฝ”๋“œ ํ…Œ์ŠคํŠธ๊ฐ€ ์ˆ˜์›”

Data Types & Variables

JavaScript ๊ตฌ๋ฌธ

JavaScript ๊ธฐ๋ณธ ๊ตฌ๋ฌธ

  • ํ•ด์„ ์ˆœ์„œ

    • Interpreter์— ์˜ํ•ด ์œ„์—์„œ ์•„๋ž˜๋กœ ํ•ด์„ & ์‹คํ–‰๋จ

      • Interpreter

        : ํ”„๋กœ๊ทธ๋žจ ์–ธ์–ด๋กœ ์ ํ˜€์ง„ ํ”„๋กœ๊ทธ๋žจ์„ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ

  • ๋Œ€/์†Œ๋ฌธ์ž ๊ตฌ๋ถ„

    • variable, method, keyword๋“ฑ ์ •ํ™•ํžˆ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅ

    • HTML์˜ ๊ฒฝ์šฐ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Œ

  • ๊ตฌ๋ฌธ ๋

  • ๊ณต๋ฐฑ๊ณผ ๋“ค์—ฌ์“ฐ๊ธฐ

  • ์ฃผ์„

Data Type ๋ถ„๋ฅ˜ (typeof)

1. ์›์‹œ ํƒ€์ž… (primitive)

๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฐ’ (immutable)

  • boolean

  • null

  • undefined

  • number (NAN๋„ number type)

  • string

  • symbol (ES6)

2. ๊ฐ์ฒด ํƒ€์ž… (object)

  • object: ์ผ๋ฐ˜ ๊ฐ์ฒด, function, array

Data Type

Number

  • Integer Type์ด ๋ณ„๋„๋กœ ์—†๋Š” ๊ฒƒ์ด์ง€ ์ •์ˆ˜๋ผ๋Š” ์ˆ˜ ์ฒด๊ณ„๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค

String

  • Template ๋ฌธ์ž์—ด

null vs undefined

  • undefined

  • null

    • ์„ ์–ธ ํ–ˆ๋Š”๋ฐ ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ

    • typeof null => object ๋ผ๊ณ  ๋‚˜์˜ด

Object

  • JavaScript๋Š” ์›์‹œ ํƒ€์ž… (primitive type)์„ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ชจ๋‘ ๊ฐ์ฒด์ด๋‹ค

  • JavaScript์˜ ๊ฐ์ฒด๋Š” key์™€ value๋กœ ๊ตฌ์„ฑ๋œ ์†์„ฑ (property)์˜ ์ง‘ํ•ฉ์ด๋‹ค

  • ๊ฐ’ == ํ•จ์ˆ˜?

    • method๋กœ ๋ถˆ๋ฆฌ์›€

๋ณ€์ˆ˜ ์œ ํšจ ๋ฒ”์œ„ (scope)

  • ํ•จ์ˆ˜ level scope๋ฅผ ๊ฐ€์ง„๋‹ค

  • ํ•จ์ˆ˜ ๋‚ด์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์ง€์—ญ๋ณ€์ˆ˜์ด๋ฉฐ, ๋‚˜๋จธ์ง€๋Š” ์ „์—ญ๋ณ€์ˆ˜๋กœ ํ™œ์šฉ

  • ๋ณ€์ˆ˜ ์„ ์–ธ ์‹œ ํ‚ค์›Œ๋“œ(var)๋ฅผ ์“ฐ์ง€ ์•Š์œผ๋ฉด, ์•”๋ฌต์  ์ „์—ญ์œผ๋กœ ์„ค์ •๋œ๋‹ค

    • ์ฃผ์˜: ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹Œ ์ „์—ญ ๊ฐ์ฒด (window)์˜ property๋กœ ์ƒ์„ฑ

      • ๋ณ€์ˆ˜์— ํ• ๋‹น๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ window.global ์ด ๋œ ๊ฒƒ!

    • keyword๋ฅผ ๊ผญ ์‚ฌ์šฉํ•ด๋ผ!

ํ˜ธ์ด์ŠคํŒ…๊ณผ let, const(ES6)

  • JavaScript์—์„œ๋Š” ๋ชจ๋“  ์„ ์–ธ์„ ํ˜ธ์ด์ŠคํŒ… ํ•œ๋‹ค

  • ES6์—์„œ ์ƒˆ๋กญ๊ฒŒ ๋“ฑ์žฅํ•œ let๊ณผ const keyword๋Š” ์ด๋Ÿฌํ•œ ๋‚ด์šฉ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค

    • ํ˜ธ์ด์ŠคํŒ… ์ž์ฒด๊ฐ€ ์ด๋ฃจ์–ด ์ง€๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ณ , var๋Š” ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™” (undefined)๋ฅผ ํ•˜๊ณ ,

    • let, const๋Š” ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์ง„ํ–‰๋œ๋‹ค

  • Block level scope๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค

JavaScript ๋ฌธ๋ฒ•

== vs ===

  • ๋™๋“ฑ ์—ฐ์‚ฐ์ž (==)

    • ๊ฐ’ ๋น„๊ต ๋ฐ ์—์ƒ์น˜ ์•Š์€ ๋ณ€ํ™˜

  • ์ผ์น˜ ์—ฐ์‚ฐ์ž (===)

    • ์—„๊ฒฉํ•œ ๊ฐ™์Œ

    • ํ˜•๋น„๊ต

    • python ์˜ == ๊ณผ ๋™์ผ!

์กฐ๊ฑด๋ฌธ

  • else if

  • {}

๋ฐ˜๋ณต๋ฌธ

  • {}

JavaScript ๊ฐ์ฒด (object)

๊ฐ์ฒด๋Š” key์™€ value๋กœ ๊ตฌ์„ฑ๋œ ์†์„ฑ (property)๋“ค์˜ ๋ชจ์ž„

๊ธฐ๋ณธ ๊ฐ์ฒด ์ƒ์„ฑ๋ฒ•

  1. ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด

    var cat1 = {}
    var cat2 = {name:'nero', age:3}
  2. Object ์ƒ์„ฑ์ž ํ•จ์ˆ˜

    var dog1 = new Object()
    dog1.name = 'cherry'
    dog1.name = 5

๊ฐ์ฒด (Object) ์ƒ์„ฑ ๋ฐฉ๋ฒ•

  • ๊ฐ์ฒด literal๋กœ ์ƒ์„ฑ์„ ํ•˜๋Š” ๊ฒฝ์šฐ key๊ฐ€ string์œผ๋กœ ํ‘œ๊ธฐ๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ์•”๋ฌต์  ํ˜•๋ณ€ํ™˜์ด ๋ฐœ์ƒํ•œ๋‹ค

    • ๊ทธ๊ฒŒ ์•„๋‹Œ ๊ฒฝ์šฐ๋Š” ๋ฐ˜๋“œ์‹œ ๋”ฐ์˜ดํ‘œ๋ฅผ ํ†ตํ•ด์„œ ๋ฌธ์ž์—ด๋กœ ๋งŒ๋“ค์–ด ์ค˜์•ผํ•จ!

    var OBJ = {
        name: 'chloe',
        'e-mail': 'chloe@test.com'
    }
    • ์—ฌ๊ธฐ์„œ name ์€ string์œผ๋กœ ์•”๋ฌต์  ํ˜•๋ณ€ํ™˜์ด ์ผ์–ด๋‚œ๋‹ค!

  • ๋งŒ์•ฝ, ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋ฉด ๋งˆ์น˜ class์ฒ˜๋Ÿผ ์†์„ฑ์ด ๋™์ผํ•œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค

    function Person(name, age){
        this.name = name;
        this.age = age
    }
    var p1 = new Person('chloe', 25)

๊ฐ์ฒด (Object) ์†์„ฑ ์ ‘๊ทผ

  • ์†์„ฑ ์ ‘๊ทผ์€ . or [] ๋กœ ๊ฐ€๋Šฅํ•˜๋‹ค

    • ๋‹จ, ๋ฐ˜๋“œ์‹œ [] ๋กœ ์ ‘๊ทผ์„ ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค

      • ex) key ๊ฐ€ string์œผ๋กœ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์€ ๊ฒฝ์šฐ

        var OBJ = {
            name: 'chloe',
            'e-mail': 'chloe@test.com'
        }
        
        OBJ['e-mail']

Last updated

Was this helpful?