front-end/JavaScript

[JavaScript] 1. λ³€μˆ˜

gaan 2023. 3. 27. 04:37

πŸ“– λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ ꡐ재) 4μž₯. λ³€μˆ˜

 

01. λ³€μˆ˜λž€?

ν•˜λ‚˜μ˜ 값을 μ €μž₯ν•˜κΈ° μœ„ν•΄ ν™•λ³΄ν•œ λ©”λͺ¨λ¦¬ 곡간 자체 λ˜λŠ” κ·Έ λ©”λͺ¨λ¦¬ 곡간을 μ‹λ³„ν•˜κΈ° μœ„ν•΄ 뢙인 이름

 

πŸ–₯️ 예제 μ½”λ“œ

var result = 10 + 20;
  • λ³€μˆ˜ 이름(λ³€μˆ˜λͺ…) : λ©”λͺ¨λ¦¬ 곡간에 μ €μž₯된 값을 식별할 수 μžˆλŠ” κ³ μœ ν•œ 이름 (μœ„μ˜ μ˜ˆμ œμ—μ„œ, result)
  • λ³€μˆ˜ κ°’ : λ³€μˆ˜μ— μ €μž₯된 κ°’ (μœ„μ˜ μ˜ˆμ œμ—μ„œ, 30)
  • ν• λ‹Ή(λŒ€μž…, μ €μž₯) : λ³€μˆ˜μ— 값을 μ €μž₯ν•˜λŠ” 것
  • μ°Έμ‘° : λ³€μˆ˜μ— μ €μž₯된 값을 읽어 λ“€μ΄λŠ” 것

02. μ‹λ³„μž

μ–΄λ–€ 값을 κ΅¬λ³„ν•΄μ„œ 식별할 수 μžˆλŠ” κ³ μœ ν•œ 이름 λ˜λŠ” λ³€μˆ˜ 이름

 

값은 λ©”λͺ¨λ¦¬ 곡간에 μ €μž₯λ˜μ–΄ μžˆμœΌλ―€λ‘œ, μ‹λ³„μžλŠ” 값이 μ•„λ‹ˆλΌ λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό κΈ°μ–΅ν•˜κ³  μžˆλ‹€.

즉, μ‹λ³„μžλŠ” λ©”λͺ¨λ¦¬ μ£Όμ†Œμ— 뢙인 이름이라고 ν•  수 μžˆλ‹€.

 


03. λ³€μˆ˜ μ„ μ–Έ

λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λ €λ©΄ λ°˜λ“œμ‹œ 선언이 ν•„μš”ν•˜λ‹€.

λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•ŒλŠ” var, let, const ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•œλ‹€.

 

let, const ν‚€μ›Œλ“œκ°€ λ„μž…λ˜κΈ° μ „μ—λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ λ³€μˆ˜λ₯Ό μ„ μ–Έν•  수 μžˆλŠ” ν‚€μ›Œλ“œλŠ” var ν‚€μ›Œλ“œκ°€ μœ μΌν–ˆλ‹€.

κ·ΈλŸ¬λ―€λ‘œ λ¨Όμ € var ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λŠ” 방법을 μ‚΄νŽ΄λ³΄λ„λ‘ ν•˜μž.

 

πŸ’‘ ν‚€μ›Œλ“œ

ν‚€μ›Œλ“œλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œλ₯Ό ν•΄μ„ν•˜κ³  μ‹€ν–‰ν•˜λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진이 μˆ˜ν–‰ν•  λ™μž‘μ„ κ·œμ •ν•œ μΌμ’…μ˜ λͺ…λ Ήμ–΄λ‹€.
μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 ν‚€μ›Œλ“œλ₯Ό λ§Œλ‚˜λ©΄ μžμ‹ μ΄ μˆ˜ν–‰ν•΄μ•Ό ν•  μ•½μ†λœ λ™μž‘μ„ μˆ˜ν–‰ν•œλ‹€.

 

πŸ–₯️ 예제 μ½”λ“œ

var score;

var ν‚€μ›Œλ“œλŠ” 뒀에 μ˜€λŠ” λ³€μˆ˜ μ΄λ¦„μœΌλ‘œ μƒˆλ‘œμš΄ λ³€μˆ˜λ₯Ό μ„ μ–Έν•  것을 μ§€μ‹œν•˜λŠ” ν‚€μ›Œλ“œλ‹€.

 

πŸ’‘ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λ…νŠΉν•œ νŠΉμ§•

λ³€μˆ˜λ₯Ό μ„ μ–Έν•œ 이후, λ³€μˆ˜μ— 값을 ν• λ‹Ήν•˜μ§€ μ•Šμ•˜μ§€λ§Œ λ©”λͺ¨λ¦¬ 곡간이 λΉ„μ–΄μžˆλŠ” 것은 μ•„λ‹ˆλ‹€.
ν™•λ³΄λœ λ©”λͺ¨λ¦¬ κ³΅κ°„μ—λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진에 μ˜ν•΄ undefinedλΌλŠ” 값이 ν• λ‹Ήλ˜μ–΄ μ΄ˆκΈ°ν™”λœλ‹€.

 

πŸ’‘ μžλ°”μŠ€ν¬λ¦½νŠΈ μ—”μ§„μ˜ λ³€μˆ˜ μ„ μ–Έ

  • μ„ μ–Έ 단계 : λ³€μˆ˜ 이름을 λ“±λ‘ν•΄μ„œ μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진에 λ³€μˆ˜μ˜ 쑴재λ₯Ό μ•Œλ¦°λ‹€.
  • μ΄ˆκΈ°ν™” 단계 : 값을 μ €μž₯ν•˜κΈ° μœ„ν•œ λ©”λͺ¨λ¦¬ 곡간을 ν™•λ³΄ν•˜κ³  μ•”λ¬΅μ μœΌλ‘œ undefinedλ₯Ό ν• λ‹Ήν•΄ μ΄ˆκΈ°ν™”ν•œλ‹€.

 

πŸ’‘ ReferenceError(μ°Έκ³  μ—λŸ¬)

  • μ‹λ³„μžλ₯Ό 톡해 값을 μ°Έμ‘°ν•˜λ € ν–ˆμ§€λ§Œ, μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진이 λ“±λ‘λœ μ‹λ³„μžλ₯Ό 찾을 수 없을 λ•Œ λ°œμƒν•˜λŠ” μ—λŸ¬

4. λ³€μˆ˜ μ„ μ–Έμ˜ μ‹€ν–‰ μ‹œμ κ³Ό λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…

πŸ–₯️ 예제 μ½”λ“œ

console.log(score); // undefined

var score; // λ³€μˆ˜ μ„ μ–Έλ¬Έ

 

λ§Œμ•½ μ½”λ“œκ°€ 순차적으둜 μ‹€ν–‰λ˜λŠ” λŸ°νƒ€μž„μ— λ³€μˆ˜ 선언이 μ‹€ν–‰λœλ‹€λ©΄

console.log(score);κ°€ μ‹€ν–‰λ˜λŠ” μ‹œμ μ—λŠ” 아직 λ³€μˆ˜κ°€ μ„ μ–Έλ˜κΈ° μ΄μ „μ΄λ―€λ‘œ μ°Έμ‘° μ—λŸ¬(ReferenceError)κ°€ λ°œμƒν•΄μ•Ό ν•œλ‹€.

ν•˜μ§€λ§Œ undefinedκ°€ 좜λ ₯λœλ‹€.

 

μ΄λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ νŠΉμ§•μΈ λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ… λ•Œλ¬Έμ΄λ‹€.

 

πŸ’‘ λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…(variable hoisting)

λ³€μˆ˜ 선언문이 μ½”λ“œμ˜ μ„ λ‘λ‘œ λŒμ–΄μ˜¬λ €μ§„ κ²ƒμ²˜λŸΌ λ™μž‘ν•˜λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ 고유의 νŠΉμ§•

 

μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 μ†ŒμŠ€μ½”λ“œλ₯Ό ν•œ 쀄씩 순차적으둜 μ‹€ν–‰ν•˜κΈ°μ— μ•žμ„œ λ¨Όμ € μ†ŒμŠ€μ½”λ“œμ˜ 평가 과정을 κ±°μΉ˜λ©΄μ„œ μ†ŒμŠ€μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•œ μ€€λΉ„λ₯Ό ν•œλ‹€.

  1. μ†ŒμŠ€μ½”λ“œμ˜ 평가 κ³Όμ • -> λͺ¨λ“  선언문을 μ†ŒμŠ€μ½”λ“œμ—μ„œ μ°Ύμ•„λ‚΄ λ¨Όμ € μ‹€ν–‰
  2. λͺ¨λ“  μ„ μ–Έλ¬Έ μ œμ™Έν•˜κ³  μ†ŒμŠ€μ½”λ“œλ₯Ό ν•œ 쀄씩 순차적으둜 μ§„ν–‰

05. κ°’μ˜ ν• λ‹Ή

ν• λ‹Ή(λŒ€μž…, μ €μž₯) μ—°μ‚°μž = μ‚¬μš©

 

πŸ–₯️ 예제 μ½”λ“œ

var score; // λ³€μˆ˜ μ„ μ–Έ
score = 80; // κ°’μ˜ ν• λ‹Ή

var score = 80; // λ³€μˆ˜ μ„ μ–Έκ³Ό κ°’μ˜ ν• λ‹Ή

 

πŸ’‘ λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…μ— λ”°λ₯Έ 주의점

  • λ³€μˆ˜ μ„ μ–Έ : μ†ŒμŠ€μ½”λ“œκ°€ 순차적으둜 μ‹€ν–‰λ˜λŠ” μ‹œμ μΈ λŸ°νƒ€μž„ 이전에 λ¨Όμ € μ‹€ν–‰
  • κ°’μ˜ ν• λ‹Ή : μ†ŒμŠ€μ½”λ“œκ°€ 순차적으둜 μ‹€ν–‰λ˜λŠ” μ‹œμ μΈ λŸ°νƒ€μž„μ— μ‹€ν–‰

06. κ°’μ˜ μž¬ν• λ‹Ή

πŸ–₯️ 예제 μ½”λ“œ

var score = 80; // λ³€μˆ˜ μ„ μ–Έκ³Ό κ°’μ˜ ν• λ‹Ή
score = 90; // κ°’μ˜ μž¬ν• λ‹Ή

var ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜λŠ” 값을 μž¬ν• λ‹Ήν•  수 μžˆλ‹€.

 

πŸ’‘ const ν‚€μ›Œλ“œ

const ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄ μ„ μ–Έν•œ λ³€μˆ˜λŠ” μž¬ν• λ‹Ή κΈˆμ§€
λ”°λΌμ„œ const ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ μƒμˆ˜λ₯Ό ν‘œν˜„ν•  수 μžˆλ‹€.

07. μ‹λ³„μž 넀이밍 κ·œμΉ™

πŸ’‘ μ‹λ³„μžμ˜ 넀이밍 κ·œμΉ™

  • μ‹λ³„μžλŠ” 특수문자λ₯Ό μ œμ™Έν•œ 문자, 숫자. μ–Έλ”μŠ€μ½”μ–΄(_), λ‹¬λŸ¬ 기호($)λ₯Ό 포함할 수 μžˆλ‹€.
  • 단, μ‹λ³„μžλŠ” 특수문자λ₯Ό μ œμ™Έν•œ 문자, μ–Έλ”μŠ€μ½”μ–΄(_), λ‹¬λŸ¬ 기호($)둜 μ‹œμž‘ν•΄μ•Ό ν•œλ‹€. 숫자둜 μ‹œμž‘ν•˜λŠ” 것은 κΈˆμ§€.
  • μ˜ˆμ•½μ–΄λŠ” μ‹λ³„μžλ‘œ μ‚¬μš©ν•  수 μ—†λ‹€.

 

πŸ’‘ λ„€μ΄λ° μ»¨λ²€μ…˜(naming convention)

// 카멜 μΌ€μ΄μŠ€(camelCase)
var firstName;

// μŠ€λ„€μ΄ν¬ μΌ€μ΄μŠ€(snake_case)
var first_name;

// 파슀칼 μΌ€μ΄μŠ€(PascalCase)
var FirstName;

 

πŸ’‘ 일반적 μ‚¬μš©

  • λ³€μˆ˜λ‚˜ ν•¨μˆ˜μ˜ 이름 : 카멜 μΌ€μ΄μŠ€
  • μƒμ„±μž ν•¨μˆ˜, 클래슀의 이름 : 파슀칼 μΌ€μ΄μŠ€
  • ECMAScript μ‚¬μš©μ— μ •μ˜λ˜μ–΄ μžˆλŠ” 객체와 ν•¨μˆ˜λ“€ : 카멜 μΌ€μ΄μŠ€, 파슀칼 μΌ€μ΄μŠ€

 

πŸ“– 참고자료

https://www.inflearn.com/course/%EB%AA%A8%EB%8D%98-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%94%A5%EB%8B%A4%EC%9D%B4%EB%B8%8C/dashboard

 

[무료] λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ λ”₯λ‹€μ΄λΈŒ μŠ€ν„°λ”” - μΈν”„λŸ° | κ°•μ˜

γ€Šλͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ λ”₯λ‹€μ΄λΈŒγ€‹ μ±… λ‚΄μš©μ„ κ·ΈλŒ€λ‘œ λ”°λΌκ°€λŠ” μŠ€ν„°λ”” μ˜μƒμž…λ‹ˆλ‹€. ν•¨κ»˜ κ³΅λΆ€ν•˜λ©΄ 훨씬 μ‰¬μ›Œμ§ˆ κ±°μ—μš”!, - κ°•μ˜ μ†Œκ°œ | μΈν”„λŸ°

www.inflearn.com