Backend
home

2024. 6. 17 - JavaScript

JavaScript

1. κ°œλ°œν™˜κ²½ ꡬ좕 및 μžλ°”μŠ€ν¬λ¦½νŠΈ κΈ°λ³Έ

β€’
VSC(Visual Studio Code) μ„ΈνŒ…
β€’
Live Server μ„€μΉ˜
β€’
ES6 μ›Ή ν‘œμ€€
β€’
node.js β†’ runtime
β—¦
μžλ°”μŠ€ν¬λ¦½νŠΈ μ‹€ν–‰ν•  수 μžˆλŠ” ν™˜κ²½μ„ λ§Œλ“€μ–΄μ€Œ
β€’
μœ„μ—μ„œ μ•„λž˜λ‘œ ν•œ 쀄 μ”© μ½μœΌλ©΄μ„œ 싀행됨
β€’
alert
β—¦
script νƒœκ·Έ μ•ˆμ— javascript μ½”λ“œλ₯Ό μž‘μ„±ν•œλ‹€.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>JavaScript</title> <!-- script νƒœκ·Έ ν™œμš©ν•˜μ—¬ javascript μ‹€ν–‰--> <script> alert('Hello~!!') </script> </head> <body> </body> </html>
HTML
볡사

2. μžλ£Œν˜•κ³Ό λ³€μˆ˜, 쑰건문과 반볡문

β€’
자료(data): ν”„λ‘œκ·Έλž¨μ΄ μ²˜λ¦¬ν•  수 μžˆλŠ” 것
β€’
μžλ£Œν˜•(data type): 자료 ν˜•νƒœμ— 따라 λ‚˜λˆ  놓은 것
β—¦
숫자(number)
β—¦
λ¬Έμžμ—΄(string)
β—¦
λΆˆλ¦¬μ–Έ(boolean)
β€’
λ¬Έμžμ—΄ μžλ£Œν˜•
β—¦
λ¬Έμžμ—΄μ€ 객체처럼 쓰여짐
β–ͺ
β€˜μ•ˆβ€™, β€˜λ…•β€™, β€˜ν•˜β€™, β€˜μ„Έβ€™, β€˜μš”β€™ β‡’ β€˜μ•ˆλ…•ν•˜μ„Έμš”β€™ (κ°μ²΄λŠ” λ¬ΆμŒμ΄λ‹€ β†’ λ³€μˆ˜λ“€, ν•¨μˆ˜λ“€)
β—¦
μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 2κ°€μ§€ λ°©λ²•μœΌλ‘œ λ¬Έμžμ—΄ 생성
β–ͺ
ν°λ”°μ˜΄ν‘œ
β–ͺ
μž‘μ€λ”°μ˜΄ν‘œ
β€’
λ¬Έμžμ—΄ 예제
β€’
주석
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>JavaScript</title> <!-- script νƒœκ·Έ ν™œμš©ν•˜μ—¬ javascript μ‹€ν–‰--> <script> // alert('Hello~!!') // ν•œ 쀄 주석 /* alert(111) alert(222) */ // λΈ”λŸ­ 주석 </script> </head> <body> </body> </html>
HTML
볡사
β€’
비ꡐ μ—°μ‚°μž
β—¦
β€˜==’ 와 β€˜===’ 의 차이점
β–ͺ
β€˜==’ λŠ” κ°’λ§Œ μΌμΉ˜ν•΄λ„ λ˜μ§€λ§Œ β€˜===β€™λŠ” νƒ€μž…κΉŒμ§€ μΌμΉ˜ν•΄μ•Ό 함
β€’
!=, !== 도 λ§ˆμ°¬κ°€μ§€
β—¦
β€˜false == []’ β‡’ true 좜λ ₯됨
β–ͺ
λ°°μ—΄μ˜ μš”μ†Œκ°€ 아무것도 μ—†μœΌλ©΄ λ™μž‘μ„ ν•˜μ§€ μ•ŠμŒ
β€’
논리 μ—°μ‚°μž
β—¦
AND: &&, ~이고, and
X
Y
R
true
true
true
true
false
false
false
false
false
β—¦
OR: ||, μ’Œλ³€ λ˜λŠ” μš°λ³€μ΄ true 이면 결과도 true
X
Y
R
true
true
true
true
false
true
false
false
false
β€’
let μ‚¬μš© μ‹œ λ°œμƒν•  수 μžˆλŠ” μ—λŸ¬
β€’
λŒ€μž… μ—°μ‚° : λ³€μˆ˜ = κ°’(λ¦¬ν„°λŸ΄) λ˜λŠ” λ³€μˆ˜
// λŒ€μž… μ—°μ‚° : λ³€μˆ˜ = κ°’(λ¦¬ν„°λŸ΄) λ˜λŠ” λ³€μˆ˜ let num7 = num6; console.log('num7 => ', num7)
JavaScript
볡사
β€’
볡합 λŒ€μž… μ—°μ‚°μž
num8 = 100 num8 = num8 + 10 // => num8 = 100 + 10 => num8 = 110 console.log('num8 = num8 + 10 =>', num8) num8 += 100 // num8 = num8 + 100 => num8 = 110 + 100 console.log('num8 += 100 => ', num8)
JavaScript
볡사
β€’
단항 μ—°μ‚°μž : ν•˜λ‚˜μ˜ λ³€μˆ˜μ— ν•˜λ‚˜μ˜ λΆ€ν˜Έ
정리
// λ³€μˆ˜ μ„ μ–Έ : var, let, const // λ³€μˆ˜ : λ°μ΄ν„°μ˜ μ°Έμ‘°κ°’(λ©”λͺ¨λ¦¬ μ£Όμ†Œ)을 μ €μž₯ => λ‚΄κ°€ μ €μž₯ν•˜κ³ μž ν•˜λŠ” λ°μ΄ν„°μ˜ λ©”λͺ¨λ¦¬ μ£Όμ†Œ μ €μž₯ // λ‹€λ₯Έ 값을 μ €μž₯ν•˜λŠ” 것도 κ°€λŠ₯ // νƒ€μž… : 숫자(number), λ¬Έμžμ—΄(string), 논리(boolean), ν•¨μˆ˜(function) // 객체(object), λ°°μ—΄[](object) // undefined => μ„ μ–Έλ˜μ§€ μ•Šμ€ λ³€μˆ˜ 호좜, 데이터 μ΄ˆκΈ°ν™”ν•˜μ§€ μ•Šμ•˜μ„ λ•Œ // 숫자 : 사칙연산( + - * / % ), λŒ€μž…μ—°μ‚°, λ³΅ν•©λŒ€μž…μ—°μ‚°μž // λ³΅ν•©λŒ€μž…μ—°μ‚°μž( += -= *= /= %= ), 단항 (+ -), // 증감 μ—°μ‚°μž ( ++ -- ) : μ „μœ„, ν›„μœ„, 1μ”© 증가 // 논리 : boolean => true / false // λΉ„κ΅μ—°μ‚°μž ( == ===, !=, !==, >, <, >=, <= ) // λ…Όλ¦¬μ—°μ‚°μž ( ! λ…Όλ¦¬λΆ€μ •μ—°μ‚°μž, &&, || )
JavaScript
볡사

3. ν•¨μˆ˜μ™€ 객체, λ¬Έμ„œ 객체

β€’
μ‚¬μš©μžκ°€ λ©”μ‹œμ§€λ₯Ό μž…λ ₯ν•˜λŠ” ν•¨μˆ˜
let username = prompt('이름을 μž…λ ₯ν•˜μ„Έμš”') // λŒ€κΈ° console.log('μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 이름 => ', username) let birth_year = prompt('νƒœμ–΄λ‚œ 년도λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”') console.log('birth_year', birth_year, typeof(birth_year)) let year_number = Number(birth_year) console.log('year_number => ', year_number, typeof(year_number)) // λ¬Έμžμ—΄ => 숫자 νƒ€μž… λ³€κ²½ // Number(λ¬Έμžμ—΄) => μˆ«μžνƒ€μž…μ˜ κ°’μœΌλ‘œ λ³€ν™˜ (NaN => Not a Number) let age = 2024 - year_number console.log('성인 νŒλ³„ => ', age >= 19)
JavaScript
볡사
β€’
ν˜• λ³€ν™˜
/ λ¬Έμžμ—΄λ‘œ λ³€ν™˜ : string // 숫자 -> λ¬Έμžμ—΄, bool -> λ¬Έμžμ—΄ let num10 = 100; // console.log('num10 => ', num10, typeof(num10)) let number_str1 = String(num10) // console.log('number_str1', number_str1, typeof(number_str1)) let number_str2 = num10 + '' // 숫자 + λ¬Έμžμ—΄ => λ¬Έμžμ—΄ + λ¬Έμžμ—΄ => λ¬Έμžμ—΄ // console.log('number_str2', number_str2, typeof (number_str2)) let check = true // console.log('check => ', check, typeof(check)) let chk_str1 = String(check) // console.log('chk_str1 => ', chk_str1, typeof(chk_str1)) let chk_str2 = check + '' // bool + string => string + string => string // console.log('chk_str2 => ', chk_str2, typeof (chk_str2)) // string -> bool, number -> bool // Boolean(κ°’) => 논리값 // 0, '', null, undefined, NaN, [] => false // ! 논리뢀정 μ—°μ‚°μž : ! 논리값
JavaScript
볡사
β€’
boolean 에 λŒ€ν•œ ν˜•λ³€ν™˜
// string -> bool, number -> bool // Boolean(κ°’) => 논리값 // 0, '', null, undefined, NaN, [] => false // ! 논리뢀정 μ—°μ‚°μž : ! 논리값 console.log('!1 => ', !1) // true => false console.log('!\'\'', !'') console.log('!\'aaa\'', !'aaa') console.log(Boolean(1)) // true console.log(Boolean('abc')) // true console.log(Boolean([])) // true console.log(Boolean({})) // true console.log(Boolean(0)) // false console.log(Boolean(NaN)) // false console.log(Boolean('')) // false let num111 // undefined console.log(Boolean(num111)) // false console.log(Boolean(null)) // null
JavaScript
볡사
β€’
쑰건문
β—¦
ν”„λ‘œκ·Έλž¨ 흐름 μ œμ–΄
β—¦
λΆ„κΈ°, 반볡
β—¦
λ³΄λ“œ β‡’ κ²Œμ‹œνŒ (νšŒμ› 리슀트, μƒν’ˆ 리슀트)
β—¦
μ˜€μ „, μ˜€ν›„ ꡬ뢄 둜직
// ν˜„μž¬ μ‹œκ°μ—μ„œ μ˜€μ „κ³Ό μ˜€ν›„λ₯Ό κ΅¬λΆ„ν•˜λŠ” μ½”λ“œ μž‘μ„± const date = new Date() // μ‹œκ°„ 비ꡐ: μ‹œκ°„ >= 12 μ˜€ν›„ if (date.getHours() >= 12) { console.log('μ˜€ν›„') } if (date.getHours() < 12){ console.log('μ˜€μ „') }
JavaScript
볡사
β€’
학점 ν‘œν˜„
// A : score >= 90 // B : score >= 80 && score < 90 // C : score >= 70 && score < 80 // F : score < 70 let score = prompt('학점을 μž…λ ₯ν•˜μ„Έμš”') if (score >= 90) { console.log('A') } else if (score >= 80) { console.log('B') } else if (score >= 70) { console.log('C') } else { console.log('F') }
JavaScript
볡사
β€’
λ‚œμˆ˜ 생성
const rand_num = Math.random() // 0보닀 ν¬κ±°λ‚˜ 같은 μ‹€μˆ˜λ‘œ ν‘œν˜„ console.log('rand_num', rand_num) const real_num = Math.floor(rand_num * 100) + 1 // Math.floor(3.1258455) console.log('real_num => ', real_num) if (real_num >= 20) { console.log('ν•˜μ΄ ~') } else if (real_num <= 80) { console.log('둜우 ~') }
JavaScript
볡사
β€’
μ‚¬μš©μžλ‘œλΆ€ν„° 숫자 데이터 μž…λ ₯λ°›μ•„μ„œ ν™€μˆ˜ 짝수 νŒλ‹¨ν•˜λŠ” ν”„λ‘œκ·Έλž¨
let temp_number = prompt('숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”') if (isNaN(temp_number)) { alert('μ˜¬λ°”λ₯Έ 숫자 ν˜•μ‹μ΄ μ•„λ‹™λ‹ˆλ‹€.') } else { if (temp_number % 2 == 0) { console.log('짝수') } else if (temp_number != 0) { console.log('ν™€μˆ˜') } }
JavaScript
볡사

기타

β€’
μ—λŸ¬
β—¦
문법 μ—λŸ¬