🐢 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