๐Ÿถ Programming/JavaScript

3. ์—ฐ์‚ฐ์ž

์ง€ ์› 2022. 11. 13. 20:28

์—ฐ์‚ฐ์ž

ํ• ๋‹น ์—ฐ์‚ฐ์ž

  • ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ํ”ผ์—ฐ์‚ฐ์ž์˜ ํ‰๊ณผ ๊ฒฐ๊ณผ๋ฅผ ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์— ํ• ๋‹นํ•˜๋Š” ์—ฐ์‚ฐ์ž
  • ๋‹ค์–‘ํ•œ ์—ฐ์‚ฐ์— ๋Œ€ํ•œ ๋‹จ์ถ• ์—ฐ์‚ฐ์ž ์ง€์›
  • Increment ๋ฐ Decrement์—ฐ์‚ฐ์ž
    • Increment (++) : ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์„ 1์ฆ๊ฐ€์‹œํ‚ค๋Š” ์—ฐ์‚ฐ์ž
    • Decrement (โ€”) : ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์„ 1๊ฐ์†Œ์‹œํ‚ค๋Š” ์—ฐ์‚ฐ์ž
    • += ๋˜๋Š” -= ์™€ ๊ฐ™์ด ๋” ๋ถ„๋ช…ํ•œ ํ‘œํ˜„์œผ๋กœ ์ ์„ ๊ฒƒ์„ ๊ถŒ์žฅ
let c = 0

c += 10
console.log(c)   // 10 (c์— 10์„ ๋”ํ•œ๋‹ค)

c -= 3
console.log(c)   // 7 (c์— 3์„ ๋บ€๋‹ค)

c *= 10
console.log(c)   // 70 (c์— 10์„ ๊ณฑํ•œ๋‹ค)

c++
console.log(c)   // 71 (c์— 1์„ ๋”ํ•œ๋‹ค, ์ฆ๊ฐ์‹)

c--
console.log(c)   // 70 (c์— 1์„ ๋บ€๋‹ค, ์ฆ๊ฐ์‹)

 

๋น„๊ต ์—ฐ์‚ฐ์ž

  • ํ”ผ์—ฐ์‚ฐ์ž๋“ค(์ˆซ์ž, ๋ฌธ์ž, Boolean ๋“ฑ)์„ ๋น„๊ตํ•˜๊ณ  ๊ฒฐ๊ณผ๊ฐ’์„ boolean์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ฐ์‚ฐ์ž
  • ๋ฌธ์ž์—ด์€ ์œ ๋‹ˆ์ฝ”๋“œ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋ฉฐ ํ‘œ์ค€ ์‚ฌ์ „ ์ˆœ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋น„๊ต
  • ex) ์•ŒํŒŒ๋ฒณ๋ผ๋ฆฌ ๋น„๊ตํ•  ๊ฒฝ์šฐ
    • ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ์ƒ ํ›„์ˆœ์œ„๊ฐ€ ๋” ํฌ๋‹ค
    • ์†Œ๋ฌธ์ž๊ฐ€ ๋Œ€๋ฌธ์ž๋ณด๋‹ค ๋” ํฌ๋‹ค
3 > 2 // true
3 < 2 // false

'A' < 'B' // true
'Z' < 'a'  // true
'๊ฐ€' < '๋‚˜' // true

 

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

  • ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๊ฐ™์€ ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋˜๋Š”์ง€ ๋น„๊ต ํ›„ boolean๊ฐ’์„ ๋ฐ˜ํ™˜
  • ๋น„๊ตํ•  ๋•Œ ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜์„ ํ†ตํ•ด ํƒ€์ž…์„ ์ผ์น˜์‹œํ‚จ ํ›„ ๊ฐ™์€ ๊ฐ’์ธ์ง€ ๋น„๊ต
  • ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋ชจ๋‘ ๊ฐ์ฒด์ผ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ๋ฐ”๋ผ๋ณด๋Š”์ง€ ํŒ๋ณ„
  • ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ

 

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

const a = 1
const b = '1'

console.log(a === b)  // false
console.log(a === Number(b)) // true
  • ๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’๊ณผ ํƒ€์ž…์ด ๋ชจ๋‘ ๊ฐ™์€ ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜
  • ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฑฐ๋‚˜, ๊ฐ™์€ ํƒ€์ž…์ด๋ฉด์„œ ๊ฐ™์€ ๊ฐ’์ธ์ง€๋ฅผ ๋น„๊ต
  • ์—„๊ฒฉํ•œ ๋น„๊ต๊ฐ€ ์ด๋ค„์ง€๋ฉฐ ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ
    • ์—„๊ฒฉํ•œ ๋น„๊ต : ๋‘ ๋น„๊ต ๋Œ€์ƒ์˜ ํƒ€์ž…๊ณผ ๊ฐ’ ๋ชจ๋‘ ๊ฐ™์€ ์ง€ ๋น„๊ตํ•˜๋Š” ๋ฐฉ์‹

 

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž

  • ์„ธ ๊ฐ€์ง€ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋กœ ๊ตฌ์„ฑ
    • and ์—ฐ์‚ฐ์€ &&์—ฐ์‚ฐ์ž
    • or์—ฐ์‚ฐ์€ || ์—ฐ์‚ฐ์ž
    • not์—ฐ์‚ฐ์€ ! ์—ฐ์‚ฐ์ž
  • ๋‹จ์ถ• ํ‰๊ฐ€ ์ง€์›
    • false && true โ‡’ false
    • true || false โ‡’ true

 

์‚ผํ•ญ ์—ฐ์‚ฐ์ž (Ternary Operator)

  • 3๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ฐ์‚ฐ์ž
  • ๊ฐ€์žฅ ์•ž์˜ ์กฐ๊ฑด์‹์ด ์ฐธ์ด๋ฉด : (์ฝœ๋ก )์•ž์˜ ๊ฐ’์ด ๋ฐ˜ํ™˜๋˜๋ฉฐ, ๊ทธ ๋ฐ˜๋Œ€์ผ ๊ฒฝ์šฐ : ๋’ค์˜ ๊ฐ’์ด ๋ฐ˜ํ™˜๋˜๋Š” ์—ฐ์‚ฐ์ž
  • ์‚ผํ•ญ ์—ฐ์‚ฐ์ž์˜ ๊ฒฐ๊ณผ ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜์— ํ• ๋‹น ๊ฐ€๋Šฅ
true ? 1 : 2 // 1
false ? 1 : 2 // 2

const result = Math.PI > 4 ? 'Yep' : 'Nope'
console.log(result)  // Nope

 

์กฐ๊ฑด๋ฌธ

์กฐ๊ฑด๋ฌธ์˜ ์ข…๋ฅ˜์™€ ํŠน์ง•

  • if statement
    • ์กฐ๊ฑด ํ‘œํ˜„์‹์˜ ๊ฒฐ๊ณผ๊ฐ’์„ boolean ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ ํ›„ ์ฐธ/๊ฑฐ์ง“์„ ํŒ๋‹จ
  • switch statement
    • ์กฐ๊ฑด ํ‘œํ˜„์‹์˜ ๊ฒฐ๊ณผ๊ฐ’์ด ์–ด๋Š ๊ฐ’(case)์— ํ•ด๋‹นํ•˜๋Š”์ง€ ํŒ๋ณ„
    • ์ฃผ๋กœ ํŠน์ • ๋ณ€์ˆ˜์˜ ๊ฐ’์— ๋”ฐ๋ผ ์กฐ๊ฑด์„ ๋ถ„๊ธฐํ•  ๋•Œ ํ™œ์šฉ
      • ์กฐ๊ฑด์ด ๋งŽ์•„์งˆ ๊ฒฝ์šฐ if๋ฌธ๋ณด๋‹ค ๊ฐ€๋…์„ฑ์ด ๋‚˜์„ ์ˆ˜ ์žˆ์Œ

if statement

const name = 'manger'

if (name === 'admin') {
    console.log('๊ด€๋ฆฌ์ž๋‹˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.')
} else if (name === 'manager') {
    console.log('๋งค๋‹ˆ์ €๋‹˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.')
} else { 
    console.log('${name}๋‹˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.')
}

if, else if, else

  • ์กฐ๊ฑด์€ ์†Œ๊ด„ํ˜ธ(condition) ์•ˆ์— ์ž‘์„ฑ
  • ์‹คํ–‰ํ•  ์ฝ”๋“œ๋Š” ์ค‘๊ด„ํ˜ธ {} ์•ˆ์— ์ž‘์„ฑ
  • ๋ธ”๋ก ์Šค์ฝ”ํ”„ ์ƒ์„ฑ

switch statement

switch(expression) {
    case 'first value' : {
        // do something
        [break]
    }
    case 'second value' : {
        // do something
        [break]
    }
    [default : {
         // do something
     }]
}
  • ํ‘œํ˜„์‹(expression)์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ์ด์šฉํ•œ ์กฐ๊ฑด๋ฌธ
  • ํ‘œํ˜„์‹์˜ ๊ฒฐ๊ณผ๊ฐ’๊ณผ case๋ฌธ์˜ ์˜ค๋ฅธ์ชฝ ๊ฐ’์„ ๋น„๊ต
  • break ๋ฐ default๋ฌธ์€ [์„ ํƒ์ ]์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • break๋ฌธ์ด ์—†๋Š” ๊ฒฝ์šฐ break๋ฌธ์„ ๋งŒ๋‚˜๊ฑฐ๋‚˜ default๋ฌธ์„ ์‹คํ–‰ํ•  ๋•Œ๊นŒ์ง€ ๋‹ค์Œ ์กฐ๊ฑด๋ฌธ ์‹คํ–‰
  • ๋ธ”๋ก ์Šค์ฝ”ํ”„ ์ƒ์„ฑ

 

์ด ๊ฒฝ์šฐ ๋ชจ๋“  cosole์ด ์ถœ๋ ฅ(Fall-through)

const name = 'ํ™๊ธธ๋™'

switch(name) {
    case 'ํ™๊ธธ๋™' : {
        console.log('ํ™๊ธธ๋™๋‹˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.')
    }
    case 'manager' : {
        console.log('๋งค๋‹ˆ์ €๋‹˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.')
    }
    default : {
        console.log(`${name}๋‹˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.`)
    }
}

 

break๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์˜๋„ํ•œ๋Œ€๋กœ ๋™์ž‘

const name = 'ํ™๊ธธ๋™'

switch(name) {
    case 'ํ™๊ธธ๋™' : {
        console.log('๊ด€๋ฆฌ์ž๋‹˜ ํ™˜์˜ํ•ฉใ„ด๋””ใ….')
        break
    }
    case 'manager' : {
        console.log('๋งค๋‹ˆ์ €๋‹˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.')
        break
    }
    default : {
        console.log(`${name}๋‹˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.`)
    }
}

 

if / switch

  • ์กฐ๊ฑด์ด ๋งŽ์€ ๊ฒฝ์šฐ switch๋ฌธ์„ ํ†ตํ•ด ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Œ
  • ์ผ๋ฐ˜์กฑ์œผ๋กœ ์ค‘์ฒฉ else if๋ฌธ์€ ์œ ์ง€๋ณด์ˆ˜ ํ•˜๊ธฐ ํž˜๋“ค๋‹ค๋Š” ๋ฌธ์ œ๋„ ์žˆ์Œ
const num0ne = 5
const numTwo = 10

if (operator === '+') {
    console.log(num0ne + numTwo)
} else if (operator == '-') {
    console.log(num0ne - numTwo)
} else if (operator == '*') {
    console.log(num0ne * numTwo)
} else if (operator == '/') {
    console.log(num0ne / numTwo)
} else {
    console.log('์œ ํšจํ•˜์ง€ ์•Š์€ ์—ฐ์‚ฐ์ž์ž…๋‹ˆ๋‹ค.')
}
const num0ne = 5
const numTwo = 10
let opertaor = '+'

switch(operator) {
    case '+' : {
        console.log(num0ne + numTwo)
        break
    }
    case '-' : {
        console.log(num0ne - numTwo)
        break
    }
    case '*' : {
        console.log(num0ne * numTwo)
        break
    }
    case '/' : {
        console.log(num0ne / numTwo)
        break
    }
    default : {
        console.log('์œ ํšจํ•˜์ง€ ์•Š์€ ์—ฐ์‚ฐ์ž์ž…๋‹ˆ๋‹ค.')
    }
}

 

๋ฐ˜๋ณต๋ฌธ

while

์กฐ๊ฑด๋ฌธ์ด ์ฐธ์ด๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฌธ์žฅ์„ ๊ณ„์†ํ•ด์„œ ์ˆ˜ํ–‰

while (์กฐ๊ฑด๋ฌธ) {
    // do something
}
let i = 0

while (i < 6) {
    console.log(i)
    i += 1
}

// 0, 1, 2, 3, 4, 5

for

ํŠน์ •ํ•œ ์กฐ๊ฑด์ด ๊ฑฐ์ง“์œผ๋กœ ํŒ๋ณ„๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต

for ([์ดˆ๊ธฐ๋ฌธ];[์กฐ๊ฑด๋ฌธ];[์ฆ๊ฐ๋ฌธ]) {
    // do something
}
for (let i = 0; i < 6; i++ ){
    console.log(i)
}

// 0, 1, 2, 3, 4, 5

forโ€ฆin

  • ๊ฐ์ฒด (object)์˜ ์†์„ฑ์„ ์ˆœํšŒํ•  ๋•Œ ์‚ฌ์šฉ
  • ๋ฐฐ์—ด๋„ ์ˆœํšŒ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ธ๋ฑ์Šค ์ˆœ์œผ๋กœ ์ˆœํšŒํ•œ๋‹ค๋Š” ๋ณด์žฅ์ด ์—†์œผ๋ฏ€๋กœ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ
for (variable in object) {
    statement
}
const fruits = {a: 'appleb', b: 'banana'}

for (const key in fruits) {
    console.log(key) // a, b
    console.log(fruits[key]) // apple, banana
}

forโ€ฆof

  • ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋ฅผ ์ˆœํšŒํ•  ๋•Œ ์‚ฌ์šฉ
  • ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ (iterable) ๊ฐ์ฒด์˜ ์ข…๋ฅ˜ : Array, Set, String ๋“ฑ
for (variable of object) {
    statements
}
const numbers = [0, 1, 2, 3]

for (const number of numbers) {
    console.log(number)  // 0, 1, 2, 3
}

forโ€ฆin ๊ณผ forโ€ฆof ์ฐจ์ด

  • for โ€ฆ in ์€ ์†์„ฑ ์ด๋ฆ„์„ ํ†ตํ•ด ๋ฐ˜๋ณต
  • for โ€ฆ of ๋Š” ์†์„ฑ ๊ฐ’์„ ํ†ตํ•ด ๋ฐ˜๋ณต
const arr = [3, 5, 7]

for (const i in arr) {
    console.log(i)  // 0 1 2
}

for (const i of arr) {
    console.log(i)  // 3 5 7
}

 

[์ฐธ๊ณ ]

for โ€ฆ in, for โ€ฆ of ์™€ const

์ผ๋ฐ˜์ ์ธ for๋ฌธ for (let i=0; i<arr.length; i++) {โ€ฆ}์˜ ๊ฒฝ์šฐ์—๋Š” ์ตœ์ดˆ ์ •์˜ํ•œ i๋ฅผ ์žฌํ• ๋‹น ํ•˜๋ฉด์„œ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— const๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—๋Ÿฌ๋ฐœ์ƒ

๋‹ค๋งŒ for..in, for..of์˜ ๊ฒฝ์šฐ์—๋Š” ์žฌํ• ๋‹น์ด ์•„๋‹ˆ๋ผ, ๋งค ๋ฐ˜๋ณต์‹œ ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ์ƒˆ๋กœ ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ

ํ‚ค์›Œ๋“œ ์ข…๋ฅ˜ ์—ฐ๊ด€ํ‚ค์›Œ๋“œ ์Šค์ฝ”ํ”„
if ์กฐ๊ฑด๋ฌธ - ๋ธ”๋ก ์Šค์ฝ”ํ”„
switch ์กฐ๊ฑด๋ฌธ case, break, default ๋ธ”๋ก ์Šค์ฝ”ํ”„
while ๋ฐ˜๋ณต๋ฌธ break, continue ๋ธ”๋ก ์Šค์ฝ”ํ”„
for ๋ฐ˜๋ณต๋ฌธ break, continue ๋ธ”๋ก ์Šค์ฝ”ํ”„
for...in ๋ฐ˜๋ณต๋ฌธ ๊ฐ์ฒด ์ˆœํšŒ ๋ธ”๋ก ์Šค์ฝ”ํ”„
for...of ๋ฐ˜๋ณต๋ฌธ iterable ์ˆœํšŒ ๋ธ”๋ก ์Šค์ฝ”ํ”„

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

2. ๋ณ€์ˆ˜์™€ ์ž๋ฃŒํ˜•  (0) 2022.11.20
1. JavaScript ์‹œ์ž‘ํ•˜๊ธฐ  (0) 2022.11.06