๐Ÿถ Programming/JavaScript

2. ๋ณ€์ˆ˜์™€ ์ž๋ฃŒํ˜•

์ง€ ์› 2022. 11. 20. 21:35

์ฝ”๋“œ ์ž‘์„ฑ๋ฒ•

์„ธ๋ฏธ์ฝœ๋ก (semicolon)

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์„ธ๋ฏธ์ฝœ๋ก ์„ ์„ ํƒ์ ์œผ๋กœ ์‚ฌ์šฉ
  • ์„ธ๋ฏธ์ฝœ๋ก ์ด ์—†์œผ๋ฉด ASI(Automatic Semicolon Insertion, ์ž๋™ ์„ธ๋ฏธ์ฝœ๋ก  ์‚ฝ์ž… ๊ทœ์น™)์— ์˜ํ•ด ์ž๋™์œผ๋กœ ์„ธ๋ฏธ์ฝœ๋ก  ์‚ฝ์ž…๋จ

 

๋“ค์—ฌ์“ฐ๊ธฐ์™€ ์ฝ”๋“œ๋ธ”๋Ÿญ

  • 2์นธ ๋“ค์—ฌ์“ฐ๊ธฐ ์‚ฌ์šฉ
  • ๋ธ”๋Ÿญ(block)์€ it, for ํ•จ์ˆ˜์—์„œ ์ค‘๊ด„ํ˜ธ { } ๋‚ด๋ถ€๋ฅผ ๋งํ•จ
  • ์ค‘๊ด„ํ˜ธ { }๋ฅผ ์‚ฌ์šฉํ•ด ์ฝ”๋“œ ๋ธ”๋Ÿญ ๊ตฌ๋ถ„

 

์ฝ”๋“œ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ

  • ์ฝ”๋”ฉ ์Šคํƒ€์ผ์˜ ํ•ต์‹ฌ์€ ํ•ฉ์˜๋œ ์›์น™๊ณผ ์ผ๊ด€์„ฑ
  • ์ฝ”๋“œ์˜ ํ’ˆ์งˆ์— ์ง๊ฒฐ๋˜๋Š” ์ค‘์š”ํ•œ ์š”์†Œ
    • ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ, ์œ ์ง€๋ณด์ˆ˜ ๋˜๋Š” ํŒ€์›๊ณผ์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋“ฑ ๊ฐœ๋ฐœ ๊ณผ์ • ์ „์ฒด์— ์˜ํ–ฅ

 

์ฃผ์„

ํ•œ์ค„ ์ฃผ์„ //

์—ฌ๋Ÿฌ์ค„ ์ฃผ์„ /* */

 

 

๋ณ€์ˆ˜์™€ ์‹๋ณ„์ž

์‹๋ณ„์ž ์ •์˜์™€ ํŠน์ง•

  • ์‹๋ณ„์ž(identifier)๋Š” ๋ณ€์ˆ˜๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜๋ช…์„ ๋งํ•จ
  • ์‹๋ณ„์ž๋Š” ๋ฐ˜๋“œ์‹œ ๋ฌธ์ž, ๋‹ฌ๋Ÿฌ($) ๋˜๋Š” ๋ฐ‘์ค„(_)๋กœ ์‹œ์ž‘
  • ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๋ฉฐ, ํด๋ž˜์Šค๋ช… ์™ธ์—๋Š” ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘
  • ์˜ˆ์•ฝ์–ด ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ
    • ์˜ˆ์•ฝ์–ด ์˜ˆ์‹œ : for, if, function ๋“ฑ

 

  • ์นด๋ฉœ ์ผ€์ด์Šค (camelCase, lower-camel-case)
    • ๋ณ€์ˆ˜, ๊ฐ์ฒด, ํ•จ์ˆ˜์— ์‚ฌ์šฉ
// ๋ณ€์ˆ˜
let dog
let variableName

// ๊ฐ์ฒด
const userInfo = { name:'Tom', age:20 }

// ํ•จ์ˆ˜
function add() {}
function getName() {}

 

  • ํŒŒ์Šค์นผ ์ผ€์ด์Šค (PascalCase, upper-camel-case)
    • ํด๋ž˜์Šค, ์ƒ์„ฑ์ž์— ์‚ฌ์šฉ
// ํด๋ž˜์Šค
class User{
    constructor(options) {
        this.name = options.name
    }
}

// ์ƒ์„ฑ์ž ํ•จ์ˆ˜
function User(options) {
    this.name = options.name
}

 

  • ๋Œ€๋ฌธ์ž ์Šค๋„ค์ดํฌ ์ผ€์ด์Šค(SNAKE_CASE)
    • ์ƒ์ˆ˜(constants)์— ์‚ฌ์šฉ
    • ์ƒ์ˆ˜ : ๊ฐœ๋ฐœ์ž์˜ ์˜๋„์™€ ์ƒ๊ด€์—†์ด ๋ณ€๊ฒฝ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์—†๋Š” ๊ฐ’์„ ์˜๋ฏธ
// ๊ฐ’์ด ๋ฐ”๋€Œ์ง€ ์•Š์„ ์ƒ์ˆ˜
const API_KEY = 'my-key'
const PI = Math.PI

// ์žฌํ• ๋‹น์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜
const NUMBERS = [1, 2, 3]

 

๋ณ€์ˆ˜ ์„ ์–ธ ํ‚ค์›Œ๋“œ

let foo             // ์„ ์–ธ
console.log(foo)    // undefined

foo = 11            // ํ• ๋‹น
console.log(foo)    // 11

let bar = 0         // ์„ ์–ธ + ํ• ๋‹น
console.log(bar)    // 0

 

Python๊ณผ ๋‹ค๋ฅด๊ฒŒ JavaScript๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ ์ •ํ•ด์ ธ ์žˆ์Œ

  1. let
  2. ๋ธ”๋ก ์Šค์ฝ”ํ”„ ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ (์ถ”๊ฐ€๋กœ ๋™์‹œ์— ๊ฐ’์„ ์ดˆ๊ธฐํ™”)
  3. const
  4. ๋ธ”๋ก ์Šค์ฝ”ํ”„ ์ฝ๊ธฐ ์ „์šฉ ์ƒ์ˆ˜๋ฅผ ์„ ์–ธ (์ถ”๊ฐ€๋กœ ๋™์‹œ์— ๊ฐ’์„ ์ดˆ๊ธฐํ™”)
  5. var
  6. ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ (์ถ”๊ฐ€๋กœ ๋™์‹œ์— ๊ฐ’์„ ์ดˆ๊ธฐํ™”)

 

[์ฐธ๊ณ ]

์„ ์–ธ, ํ• ๋‹น, ์ดˆ๊ธฐํ™”

  • ์„ ์–ธ (Declaration)
    • ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ–‰์œ„ ๋˜๋Š” ์‹œ์ 
  • ํ• ๋‹น (Assignment)
    • ์„ ์–ธ๋œ ๋ณ€์ˆ˜์— ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ํ–‰์œ„ ๋˜๋Š” ์‹œ์ 
  • ์ดˆ๊ธฐํ™” (Initialization)
    • ์„ ์–ธ๋œ ๋ณ€์ˆ˜์— ์ฒ˜์Œ์œผ๋กœ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ํ–‰์œ„ ๋˜๋Š” ์‹œ์ 

 

๋ธ”๋ก์Šค์ฝ”ํ”„(block scope)

  • if, for, ํ•จ์ˆ˜ ๋“ฑ์˜ ์ค‘๊ด„ํ˜ธ ๋‚ด๋ถ€๋ฅผ ๊ฐ€๋ฆฌํ‚ด
  • ๋ธ”๋ก ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง€๋Š” ๋ณ€์ˆ˜๋Š” ๋ธ”๋ก ๋ฐ”๊นฅ์—์„œ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ
let x = 1
if (x===1) {
    let x = 2
    console.log(x)   // 2
}

console.log(x)       // 1

 

๋ณ€์ˆ˜ ์„ ์–ธ ํ‚ค์›Œ๋“œ - let

let number = 10    // 1. ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐ๊ฐ’ ํ• ๋‹น
number = 20        // 2. ์žฌํ• ๋‹น


let number = 10    // 1. ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐ๊ฐ’ ํ• ๋‹น
let number = 20    // 2. ์žฌ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ
  • ์žฌํ• ๋‹น ๊ฐ€๋Šฅ & ์žฌ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ
  • ๋ธ”๋ก ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ–๋Š” ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ, ์„ ์–ธ๊ณผ ๋™์‹œ์— ์›ํ•˜๋Š” ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•  ์ˆ˜ ์žˆ์Œ

 

๋ณ€์ˆ˜ ์„ ์–ธ ํ‚ค์›Œ๋“œ - const

const number = 10  // 1. ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐ๊ฐ’ ํ• ๋‹น
number = 10        // 2. ์žฌํ• ๋‹น ๋ถˆ๊ฐ€๋Šฅ

const number = 10  // 1. ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐ๊ฐ’ ํ• ๋‹น
const numbet = 20  // 2. ์žฌ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ
  • ์žฌํ• ๋‹น ๋ถˆ๊ฐ€๋Šฅ & ์žฌ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ (์ฝ๊ธฐ ์ „์šฉ)
  • ์„ ์–ธ ์‹œ ๋ฐ˜๋“œ์‹œ ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •ํ•ด์•ผ ํ•˜๋ฉฐ, ์ดํ›„ ๊ฐ’ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅ
  • let๊ณผ ๋™์ผํ•˜๊ฒŒ ๋ธ”๋ก์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง

 

๋ณ€์ˆ˜ ์„ ์–ธ ํ‚ค์›Œ๋“œ - var

  • ์žฌํ• ๋‹น ๊ฐ€๋Šฅ & ์žฌ์„ ์–ธ ๊ฐ€๋Šฅ
  • ES6 ์ด์ „์— ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋˜ ํ‚ค์›Œ๋“œ
  • “ํ˜ธ์ด์ŠคํŒ…”๋˜๋Š” ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ์˜ˆ๊ธฐ์น˜ ๋ชปํ•œ ๋ฌธ์ œ ๋ฐœ์ƒ๊ฐ€๋Šฅ
    • ๋”ฐ๋ผ์„œ ES6์ดํ›„๋ถ€ํ„ฐ๋Š” var๋Œ€์‹  const์™€ let์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ
  • ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„(function scope)๋ฅผ ๊ฐ€์ง

 

[์ฐธ๊ณ ]

ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„ (finction scope)

  • ํ•จ์ˆ˜์˜ ์ค‘๊ด„ํ˜ธ ๋‚ด๋ถ€๋ฅผ ๊ฐ€๋ฆฌํ‚ด
  • ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง€๋Š” ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜ ๋ฐ”๊นฅ์—์„œ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ
function foo() {
    var x = 5
    console.log(x)   // 5
}

// Reference Error : x is nor defined
console.log(x)

 

ํ˜ธ์ด์ŠคํŒ… (hoisting)

  • ๋ณ€์ˆ˜ ์„ ์–ธ ์ด์ „์— ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ํ˜„์ƒ
  • var๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์„ ์–ธ ์ด์ „์— ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Ÿฌํ•œ ํ˜„์ƒ์„ ํ˜ธ์ด์ŠคํŒ…์ด๋ผ ํ•จ
  • ๋ณ€์ˆ˜ ์„ ์–ธ ์ด์ „์˜ ์œ„์น˜์—์„œ ์ ‘๊ทผ ์‹œ undefinde๋ฅผ ๋ฐ˜ํ™˜
  • JavaScript์—์„œ ๋ณ€์ˆ˜๋“ค์€ ์‹ค์ œ ์‹คํ–‰์‹œ์— ์ฝ”๋“œ์˜ ์ตœ์ƒ๋‹จ์œผ๋กœ ๋Œ์–ด ์˜ฌ๋ ค์ง€๊ฒŒ ๋˜๋ฉฐ ์ด๋Ÿฌํ•œ ์ด์œ ๋•Œ๋ฌธ์— var๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์„ ์–ธ ์‹œ์— undefined๋กœ ๊ฐ’์ด ์ดˆ๊ธฐํ™” ๋˜๋Š” ๊ณผ์ •์ด ๋™์‹œ์— ์ผ์–ด๋‚จ
  • ๋ฐ˜๋ฉด let, const๋Š” ํ˜ธ์ด์ŠคํŒ…์ด ์ผ์–ด๋‚˜๋ฉด ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ด
console.log(username)  // undefined
var username = 'ํ™๊ธธ๋™'

console.log(email)     // Uncaught ReferenceError
let email = 'name@gmail.com'

console.log(age)       // Uncaught ReferenceError
const age = 50
  • ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ธฐ ์ „์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์€ ์ฝ”๋“œ์˜ ๋…ผ๋ฆฌ์ ์ธ ํ๋ฆ„์„ ๊นจ๋œจ๋ฆฌ๋Š” ํ–‰์œ„์ด๋ฉฐ ์ด๋Ÿฌํ•œ ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด let, const๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Œ
    • ์ฆ‰ var๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š” ํ‚ค์›Œ๋“œ
  • ๋‹ค๋งŒ, ์•„์ง๊นŒ์ง€๋„ ๋งŽ์€ ๊ธฐ์กด์˜ JavaScript ์ฝ”๋“œ๋Š” ES6์ด์ „์˜ ๋ฌธ๋ฒ•์œผ๋กœ ์ž‘์„ฑ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ํ˜ธ์ด์ŠคํŒ…์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”
         
ํ‚ค์›Œ๋“œ ์žฌ์„ ์–ธ ์žฌํ• ๋‹น ์Šค์ฝ”ํ”„ ๋น„๊ณ 
let X O ๋ธ”๋ก ์Šค์ฝ”ํ”„ ES6๋ถ€ํ„ฐ ๋„์ž…
const X X ๋ธ”๋ก ์Šค์ฝ”ํ”„ ES6๋ถ€ํ„ฐ ๋„์ž…
var O O ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„ ์‚ฌ์šฉ X
  • ์–ด๋””์— ๋ณ€์ˆ˜๋ฅผ ์“ฐ๊ณ  ์ƒ์ˆ˜๋ฅผ ์“ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ๋ชซ
  • Airbnb ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ const ์‚ฌ์šฉ์„ ๊ถŒ์žฅ
    • ์žฌํ• ๋‹นํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋งŒ let
  • ๋‹ค๋งŒ, ์‹ค์Šต์—์„œ๋Š” ํŽธ์˜๋ฅผ ์œ„ํ•ด ์žฌํ• ๋‹น์ด ๊ฐ€๋Šฅํ•œ let์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•ด๋„ ๋จ

 

๋ฐ์ดํ„ฐ ํƒ€์ž…

  • JavaScript์˜ ๋ชจ๋“  ๊ฐ’์€ ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๊ฐ€์ง
  • ํฌ๊ฒŒ ์›์‹œ ํƒ€์ž…(Primitive type)๊ณผ ์ฐธ์กฐ ํƒ€์ž…(Reference type)์œผ๋กœ ๋ถ„๋ฅ˜๋จ

image

 

Number

์ •์ˆ˜ ๋˜๋Š” ์‹ค์ˆ˜ํ˜• ์ˆซ์ž๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ์ž๋ฃŒํ˜•

const a = 13
const b = -5
const c = 3.14    // float ์ˆซ์žํ‘œํ˜„
const d = 2.998e8    // 2.998 * 10^8 = 299,800,000
const e = Infinity
const f = -Infinity
const g = NaN  // Not a Number๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’

 

NaN

  • Not-A-Number(์ˆซ์ž๊ฐ€ ์•„๋‹˜)๋ฅผ ๋‚˜ํƒ€๋ƒ„
  • Number.isNaN()์˜ ๊ฒฝ์šฐ ์ฃผ์–ด์ง„ ๊ฐ’์˜ ์œ ํ˜•์ด Number์ด๊ณ  ๊ฐ’์ด NaN์ด๋ฉด true, ์•„๋‹ˆ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜

NaN์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ

  1. ์ˆซ์ž๋กœ์„œ ์ฝ์„ ์ˆ˜ ์—†์Œ (parseInt(”์–ด์ฉŒ๊ตฌ”), Number(underfined))
  2. ๊ฒฐ๊ณผ๊ฐ€ ํ—ˆ์ˆ˜์ธ ์ˆ˜ํ•™ ๊ณ„์‚ฐ์‹ (Math.sqrt(-1))
  3. ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ NaN (7**NaN)
  4. ์ •์˜ํ•  ์ˆ˜ ์—†๋Š” ๊ณ„์‚ฐ์‹ (0*Infinity)
  5. ๋ฌธ์ž์—ด์„ ํฌํ•จํ•˜๋ฉด์„œ ๋ง์…ˆ์ด ์•„๋‹Œ ๊ณ„์‚ฐ์‹ (”๊ฐ€”/3)

 

String

  • ๋ฌธ์ž์—ด์„ ํ‘œํ˜„ํ•˜๋Š” ์ž๋ฃŒํ˜•
  • ์ž‘์€ ๋”ฐ์˜ดํ‘œ ๋˜๋Š” ํฐ ๋”ฐ์˜ดํ‘œ ๋ชจ๋‘ ๊ฐ€๋Šฅ
const sentence1 = 'single quote'   // single quote
const sentence2 = "double quote"   // double quote

console.log(sentence1)
console.log(sentence2)
  • ๊ณฑ์…ˆ, ๋‚˜๋ˆ—์…ˆ, ๋บ„์…ˆ์€ ์•ˆ๋˜์ง€๋งŒ ๋ง์…ˆ์„ ํ†ตํ•ด ๋ฌธ์ž์—ด์„ ๋ถ™์ผ ์ˆ˜ ์žˆ์Œ
const firstName = 'firstName'
const lastName = 'lastName'
const fullName = firstName + lastName

console.log(fullName)
  • Quote๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„ ์–ธ ์‹œ ์ค„ ๋ฐ”๊ฟˆ์ด ์•ˆ๋จ
  • ๋Œ€์‹  escape sequence๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— \n๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ
// Bad
const word = "์•ˆ๋…•
ํ•˜์„ธ์š”" // Uncaught SyntaxError: Invalid or unexpected token

// Good
const word1 = "์•ˆ๋…• \nํ•˜์„ธ์š”"
console.log(word1)
  • Template Literal ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ค„๋ฐ”๊ฟˆ์ด ๋˜๋ฉฐ, ๋ฌธ์ž์—ด ์‚ฌ์ด์— ๋ณ€์ˆ˜๋„ ์‚ฝ์ž…๋„ ๊ฐ€๋Šฅ

(๋‹จ, escape sequence๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค) == Python์˜ “f-string”

const word2 = `์•ˆ๋…•
๋“ค ํ•˜์„ธ์š”`
console.log(word2)

const age = 10
const message = `ํ™๊ธธ๋™์€ ${age}์„ธ ์ž…๋‹ˆ๋‹ค.`
console.log(message)

 

Template literals (ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด)

  • ๋‚ด์žฅ๋œ ํ‘œํ˜„์‹์„ ํ—ˆ์šฉํ•˜๋Š” ๋ฌธ์ž์—ด ์ž‘์„ฑ ๋ฐฉ์‹
  • ES6+๋ถ€ํ„ฐ ์ง€์›
  • Backtick(’ ‘)์„ ์ด์šฉํ•˜๋ฉฐ, ์—ฌ๋Ÿฌ ์ค„์— ๊ฑธ์ณ ๋ฌธ์ž์—ด์„ ์ •์˜ํ•  ์ˆ˜๋„ ์žˆ๊ณ  JavaScript์˜ ๋ณ€์ˆ˜๋ฅผ ๋ฌธ์ž์—ด์•ˆ์— ๋ฐ”๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์ด์ ์ด ์ƒ๊น€
  • ํ‘œํ˜„์‹์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” $์™€ ์ค‘๊ด„ํ˜ธ($ {expression}) ๋กœ ํ‘œ๊ธฐ
const age = 10
const message = `ํ™๊ธธ๋™์€ ${age}์„ธ ์ž…๋‹ˆ๋‹ค.`

 

Empty Value

  • ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์Œ์„ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ’์œผ๋กœ JavaScript์—์„œ๋Š” null๊ณผ undefinde๊ฐ€ ์กด์žฌ
  • ๋™์ผํ•œ ์—ญํ• ์„ ํ•˜๋Š” ์ด ๋‘๊ฐœ์˜ ํ‚ค์›Œ๋“œ๊ฐ€ ์กด์žฌํ•˜๋Š” ์ด์œ ๋Š” ๋‹จ์ˆœํ•œ JavaScript์˜ ์„ค๊ณ„ ์‹ค์ˆ˜
  • ํฐ ์ฐจ์ด๋ฅผ ๋‘์ง€ ๋ง๊ณ  interchangeableํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ถŒ์žฅํ•จ

 

nulll

  • null ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” ํŠน๋ณ„ํ•œ ํ‚ค์›Œ๋“œ
  • ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ์—†์Œ์„ ์˜๋„์ ์œผ๋กœ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…
let lastName = null
console.log(lastName) // null - ์˜๋„์ ์œผ๋กœ ๊ฐ’์ด ์—†์Œ์„ ํ‘œํ˜„ํ•จ

 

undefined

  • ๊ฐ’์ด ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์Œ์„ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ’
  • ๋ณ€์ˆ˜ ์„ ์–ธ ์ดํ›„ ์ง์ ‘ ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ ํ• ๋‹น๋จ
let firstName  // ์„ ์–ธ๋งŒ ํ•˜๊ณ  ํ• ๋‹นํ•˜์ง€ ์•Š์Œ
console.log(firstName)  // undefined

 

null๊ณผ undefinde

  • null๊ณผ undefinde์˜ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์ฐจ์ด์ ์€ typeof ์—ฐ์‚ฐ์ž๋ฅผ ํƒ€์ž…์„ ํ™•์ธํ–ˆ์„ ๋•Œ ๋‚˜ํƒ€๋‚จ
typeof null   // "object"
typeof undefined // "undefined"
  • null์ด ์›์‹œ ํƒ€์ž…์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  object๋กœ ์ถœ๋ ฅ๋˜๋Š” ์ด์œ ๋Š” JavaScript ์„ค๊ณ„ ๋‹น์‹œ์˜ ๋ฒ„๊ทธ๋ฅผ ์ง€๊ธˆ๊นŒ์ง€ ํ•ด๊ฒฐํ•˜๊ธฐ ๋ชปํ•œ ๊ฒƒ
  • ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๋Š” ์ด๋ฏธ nullํƒ€์ž…์— ์˜์กด์„ฑ์„ ๋„๊ณ  ์žˆ๋Š” ๋งŽ์€ ํ”„๋กœใ…ก๋žจ๋“ค์ด ๋ง๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ (ํ•˜์œ„ ํ˜ธํ™˜ ์œ ์ง€)

 

Boolean

  • true์™€ false
  • ์ฐธ๊ณผ ๊ฑฐ์ง“์„ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ’
  • ์กฐ๊ฑด๋ฌธ ๋˜๋Š” ๋ฐ˜๋ณต๋ฌธ์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ
    • ์กฐ๊ฑด๋ฌธ ๋˜๋Š” ๋ฐ˜๋ณต๋ฌธ์—์„œ boolean์ด ์•„๋‹Œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ์ž๋™ ํ˜•๋ณ€ํ™˜ ๊ทœ์น™์— ๋”ฐ๋ผ true๋˜๋Š” false๋กœ ๋ณ€ํ™˜๋จ

 

ToBoolean Conversions (์ž๋™ ํ˜•๋ณ€ํ™˜)

๋ฐ์ดํ„ฐ ํƒ€์ž… false true
undefined ํ•ญ์ƒ ๊ฑฐ์ง“ X
null ํ•ญ์ƒ ๊ฑฐ์ง“ X
Number 0, -0, NaN ๋‚˜๋จธ์ง€ ๋ชจ๋“  ๊ฒฝ์šฐ
String ๋นˆ ๋ฌธ์ž์—ด ๋‚˜๋จธ์ง€ ๋ชจ๋“  ๊ฒฝ์šฐ
Object X ํ•ญ์ƒ ์ฐธ

 

'๐Ÿถ Programming > JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

3. ์—ฐ์‚ฐ์ž  (0) 2022.11.13
1. JavaScript ์‹œ์ž‘ํ•˜๊ธฐ  (0) 2022.11.06