🌱 5μž₯ : ν‘œν˜„μ‹κ³Ό λ¬Έ

μ˜€λ‹€ν˜œΒ·2022λ…„ 4μ›” 12일
0
post-thumbnail

1. κ°’


κ°’(value) : 식(ν‘œν˜„μ‹)을 ν‰κ°€ν•˜μ—¬ μƒμ„±λœ κ²°κ³Ό (평가 : 식을 ν•΄μ„ν•΄μ„œ 값을 μƒμ„±ν•˜κ±°λ‚˜ μ°Έμ‘°ν•˜λŠ” 것)

  • λͺ¨λ“  값은 λ°μ΄ν„°νƒ€μž…μ„ 가지며 λ©”λͺ¨λ¦¬μ— 2μ§„μˆ˜(bit)둜 μ €μž₯이 λœλ‹€.
  • 같은 값이여도 데이터 νƒ€μž…μ— 따라 λ‹€λ₯΄κ²Œ 해석될 수 μžˆλ‹€. (ex. 0100 0001(2μ§„μˆ˜) β†’ A(character))
  • λ³€μˆ˜λŠ” 값을 μ €μž₯ν•˜κΈ° μœ„ν•΄ ν• λ‹Ήλœ λ©”λͺ¨λ¦¬ 곡간 or ν•΄λ‹Ή 곡간에 뢙여진 μ΄λ¦„μœΌλ‘œ, κ²°κ΅­ λ³€μˆ˜μ—λŠ” β€˜κ°’' 이 μ €μž₯λœλ‹€.
  • λ³€μˆ˜μ—λŠ” β€˜κ°’' 이 할당이 되며, 값을 λ§Œλ“€κΈ° μœ„ν•΄μ„œ 식은 ν• λ‹Ή 전에 평가가 λ˜μ–΄μ•Ό 함

2. λ¦¬ν„°λŸ΄


λ¦¬ν„°λŸ΄(literal) : μ‚¬λžŒμ΄ 이해할 수 μžˆλŠ” 문자 λ˜λŠ” μ•½μ†λœ 기호λ₯Ό μ‚¬μš©ν•΄ 값을 μƒμ„±ν•˜λŠ” ν‘œκΈ°λ²•

μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 λŸ°νƒ€μž„ μ‹œμ μ— λ¦¬ν„°λŸ΄μ„ ν‰κ°€ν•˜μ—¬ 값을 생성함.

  • λ¦¬ν„°λŸ΄μ˜ μ’…λ₯˜
    1. μ •μˆ˜ λ¦¬ν„°λŸ΄
    2. λΆ€λ™μ†Œμˆ˜μ  λ¦¬ν„°λŸ΄
    3. 2μ§„μˆ˜ λ¦¬ν„°λŸ΄
    4. 8μ§„μˆ˜ λ¦¬ν„°λŸ΄
    5. 16μ§„μˆ˜ λ¦¬ν„°λŸ΄
    6. λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄
    7. λΆˆλ¦¬μ–Έ λ¦¬ν„°λŸ΄
    8. null λ¦¬ν„°λŸ΄
    9. undefined λ¦¬ν„°λŸ΄
    10. 객체 λ¦¬ν„°λŸ΄
    11. λ°°μ—΄ λ¦¬ν„°λŸ΄
    12. ν•¨μˆ˜ λ¦¬ν„°λŸ΄
    13. μ •κ·œ ν‘œν˜„μ‹ λ¦¬ν„°λŸ΄

3. ν‘œν˜„μ‹


ν‘œν˜„μ‹(expression) : κ°’μœΌλ‘œ 평가될 수 μžˆλŠ” λ¬Έ(statement)

  • ν‘œν˜„μ‹μ€ λ¦¬ν„°λŸ΄, μ‹λ³„μž, μ—°μ‚°μž, ν•¨μˆ˜ 호좜 λ“±μ˜ μ‘°ν•©μœΌλ‘œ μ΄λ£¨μ–΄μ§ˆ 수 μžˆλ‹€.
  • 즉, κ°’μœΌλ‘œ 평가될 수 있으면 λͺ¨λ‘ ν‘œν˜„μ‹μ΄λ‹€.
  • κ°’κ³Ό ν‘œν˜„μ‹μ€ λ™μΉ˜μ΄λ―€λ‘œ κ°’μ˜ μžλ¦¬μ— ν‘œν˜„μ‹μ΄ μœ„μΉ˜ν•  수 μžˆλ‹€. (β†’ ν‘œν˜„μ‹μ˜ μžλ¦¬μ— κ°’μœΌλ‘œ λŒ€μ²΄ν•˜λ©΄ μ½”λ“œ μ΄ν•΄ν•˜κΈ°κ°€ 쉽닀!)

4. λ¬Έ


λ¬Έ(statement) : ν”„λ‘œκ·Έλž¨μ„ κ΅¬μ„±ν•˜λŠ” κΈ°λ³Έ λ‹¨μœ„μ΄μž μ΅œμ†Œ μ‹€ν–‰ λ‹¨μœ„

  • 문은 ν† ν°μœΌλ‘œ κ΅¬μ„±λ˜λ©°, 토큰(token)은 문법적인 의미λ₯Ό 가진 μ½”λ“œμ˜ μ΅œμ†Œ λ‹¨μœ„λ₯Ό μ˜λ―Έν•œλ‹€.
  • 문의 μ’…λ₯˜ μ„ μ–Έλ¬Έ ν• λ‹Ήλ¬Έ 쑰건문 반볡문

5. μ„Έλ―Έμ½œλ‘ κ³Ό μ„Έλ―Έμ½œλ‘  μžλ™ μ‚½μž… κΈ°λŠ₯


  • μ„Έλ―Έμ½œλ‘ (;) 문의 μ’…λ£Œλ₯Ό λ‚˜νƒ€λ‚΄λ©°, μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 μ„Έλ―Έμ½œλ‘ μ„ 톡해 문이 μ’…λ£Œν•  μœ„μΉ˜λ₯Ό νŒŒμ•…ν•œλ‹€.
  • 단, 0개 μ΄μƒμ˜ 문을 μ€‘κ΄„ν˜Έλ‘œ 묢은 μ½”λ“œλΈ”λ‘μ€ 자체 쒅결성이 있기 λ•Œλ¬Έμ— μ½”λ“œλΈ”λ‘ λ’€μ—λŠ” μ„Έλ―Έμ½œλ‘ μ„ 뢙이지 μ•ŠλŠ”λ‹€.
  • μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진이 μ†ŒμŠ€μ½”λ“œλ₯Ό 해석할 λ•Œ 끝이라고 μ˜ˆμΈ‘λ˜λŠ” 뢀뢄에 μ„Έλ―Έμ½œλ‘ μ„ μžλ™μœΌλ‘œ λΆ™μ—¬μ£ΌλŠ” μ„Έλ―Έμ½œλ‘  μžλ™ μ‚½μž… κΈ°λŠ₯(ASI : automatic semicolon insertion)이 μžˆμ–΄μ„œ μ„Έλ―Έμ½œλ‘ μ€ μƒλž΅μ΄ κ°€λŠ₯ν•˜λ‹€.

ν•˜μ§€λ§Œ, ESLint 등에도 μ„Έλ―Έμ½œλ‘  μ‚¬μš©μ„ 기본으둜 μ„€μ •ν•˜κ³  있고 TC39(ECMAScript 기술 μœ„μ›νšŒ)도 μ„Έλ―Έμ½œλ‘ μ„ ꢌμž₯ν•˜κ³  μžˆμœΌλ―€λ‘œ μ›¬λ§Œν•˜λ©΄ μ„Έλ―Έμ½œλ‘ μ„ 뢙이도둝 ν•˜μž.

6. ν‘œν˜„μ‹μΈ λ¬Έκ³Ό ν‘œν˜„μ‹μ΄ μ•„λ‹Œ λ¬Έ


  • κ°’μœΌλ‘œ 평가가 κ°€λŠ₯ν•˜λ‹€ β‡’ ν‘œν˜„μ‹μΈ λ¬Έ
  • κ°’μœΌλ‘œ 평가가 λΆˆκ°€λŠ₯ν•˜λ‹€ β‡’ ν‘œν˜„μ‹μ΄ μ•„λ‹Œ λ¬Έ
var foo; // 선언문은 κ°’μœΌλ‘œ 평가할 수 μ—†μœΌλ―€λ‘œ ν‘œν˜„μ‹ X
foo = 100; // 할당문은 κ°’μœΌλ‘œ 평가할 수 μžˆμœΌλ―€λ‘œ ν‘œν˜„μ‹ O

μ‰½κ²Œ 확인할 수 μžˆλŠ” 방법은 문을 λ³€μˆ˜μ— λŒ€μž…ν•΄λ³΄λ©΄ λœλ‹€. (λ³€μˆ˜ : 값을 μ €μž₯ν•˜κΈ° μœ„ν•΄ ν• λ‹Ήν•œ λ©”λͺ¨λ¦¬)

μ™„λ£Œκ°’(completion value)

  • ν‘œν˜„μ‹μ΄ μ•„λ‹Œ 문을 μ‹€ν–‰ν•˜κ²Œ 되면 undefined λ₯Ό 좜λ ₯ν•˜λŠ”λ° 이λ₯Ό μ™„λ£Œκ°’μ΄λΌκ³  λΆ€λ₯Έλ‹€.
  • μ™„λ£Œκ°’μ€ ν‘œν˜„μ‹μ˜ 평가 κ²°κ³Όκ°€ μ•„λ‹ˆλ‹€. λ”°λΌμ„œ λ³€μˆ˜μ— ν• λ‹Ήν•˜κ±°λ‚˜ μ°Έμ‘°ν•  수 μ—†λ‹€.
profile
ν”„λ‘ νŠΈμ—”λ“œμ— λ°±μ—”λ“œ ν•œ μŠ€ν‘Ό πŸ₯„

0개의 λŒ“κΈ€