5.1 κ°’

κ°’(value)λŠ” 식(ν‘œν˜„μ‹ expression)이 ν‰κ°€λ˜μ–΄ μƒμ„±λœ κ²°κ³Όλ₯Ό λ§ν•œλ‹€.

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

값은 λ‹€μ–‘ν•œ λ°©λ²•μœΌλ‘œ 생성할 수 μžˆμ§€λ§Œ κ°€μž₯ 기본적인 방법은 λ¦¬ν„°λŸ΄μ„ μ‚¬μš©ν•˜λŠ” 것이닀.

5.2 λ¦¬ν„°λŸ΄

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

λ¦¬ν„°λŸ΄μ„ μ‚¬μš©ν•˜λ©΄ λ‹€μŒκ³Ό 같이 λ‹€μ–‘ν•œ μ’…λ₯˜(data type)의 값을 생성할 수 μžˆλ‹€.

(λ°˜λ³΅κ°€λŠ₯ν•œ 객체 μ΄ν„°λŸ΄κ³Ό ν—·κ°ˆλ Έλ‹€)

5.3 ν‘œν˜„μ‹

ν‘œν˜„μ‹(expression)은 κ°’μœΌλ‘œ 평가될 수 μžˆλŠ” λ¬Έ(statement)이닀. 즉 ν‘œν˜„μ‹μ΄ ν‰κ°€λ˜λ©΄ μƒˆλ‘œμš΄ 값을 μƒμ„±ν•˜κ±°λ‚˜ κΈ°μ‘΄ 값을 μ°Έμ‘°ν•œλ‹€.


5.4 λ¬Έ

λ¬Έ(statement)μ΄λž€ ν”„λ‘œκ·Έλž¨μ„ κ΅¬μ„±ν•˜λŠ” κΈ°λ³Έ λ‹¨μœ„μ΄μž μ΅œμ†Œ μ‹€ν–‰λ‹¨μœ„μ΄λ‹€. 문의 μ§‘ν•©μœΌλ‘œ 이뀄진 것이 λ°”λ‘œ ν”„λ‘œκ·Έλž¨μ΄λ©°, 문을 μž‘μ„±ν•˜κ³  μˆœμ„œμ— 맞게 λ‚˜μ—΄ν•˜λŠ” 것이 ν”„λ‘œκ·Έλž˜λ°μ΄λ‹€.

문은 μ—¬λŸ¬ ν† ν°μœΌλ‘œ κ΅¬μ„±λœλ‹€. 토큰(token)μ΄λž€ 문법적인 의미λ₯Ό 가지며, λ¬Έλ²•μ μœΌλ‘œ 더 이상 λ‚˜λˆŒ 수 μ—†λŠ” μ½”λ“œμ˜ κΈ°λ³Έμš”μ†Œλ₯Ό μ˜λ―Έν•œλ‹€.

문은 μ„ μ–Έλ¬Έ, ν• λ‹Ήλ¬Έ, 쑰건문, 반볡문 λ“±μœΌλ‘œ ꡬ뢄할 수 μžˆλ‹€.

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

  // ν• λ‹Ήλ¬Έ
  x = 5;

  // ν•¨μˆ˜ μ„ μ–Έλ¬Έ
  function foo() {}

  // 쑰건문
  if(x > 1) { console.log(x); }

  // 반볡문
  for(var i = 0 ;  i<2 ; i++) { console.log(x); }

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

μ„Έλ―Έμ½œλ‘ μ€ 문의 μ’…λ£Œλ₯Ό λ‚˜νƒ€λ‚Έλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 μ„Έλ―Έμ½œλ‘ μœΌλ‘œ 문이 μ’…λ£Œν•œ μœ„μΉ˜λ₯Ό νŒŒμ•…ν•˜κ³  순차적으둜 ν•˜λ‚˜μ”© 문을 μ‹€ν–‰ν•œλ‹€. λ”°λΌμ„œ 문을 끝낼 λ•ŒλŠ” μ„Έλ―Έμ½œλ‘ μ„ λΆ™μ—¬μ•Ό ν•œλ‹€. 단, 0개 μ΄μƒμ˜ 문을 μ€‘κ΄„ν˜Έλ‘œ 묢은 μ½”λ“œλΈ”λ‘({...}) λ’€μ—λŠ” μ„Έλ―Έμ½œλ‘ μ„ 뢙이지 μ•ŠλŠ”λ‹€.

ν•˜μ§€λ§Œ λ¬Έμ—μ˜ 끝에 λΆ™μ΄λŠ” μ„Έλ―Έμ½œλ‘ μ€ μ˜΅μ…˜μ΄λ‹€. 즉, μƒλž΅ κ°€λŠ₯ν•˜λ‹€λŠ”κ²ƒμ΄λ‹€. μ΄λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진이 μ†ŒμŠ€μ½”λ“œλ₯Ό 해석할 λ•Œ 문의 끝이라고 μ˜ˆμΈ‘λ˜λŠ” 지점에 μ„Έλ―Έμ½œλ‘ μ„ μžλ™μœΌλ‘œ λΆ™μ—¬μ£ΌλŠ” μ„Έλ―Έμ½œλ‘  μžλ™ μ‚½μž… κΈ°λŠ₯(ASI)이 μ•”λ¬΅μ μœΌλ‘œ μˆ˜ν–‰λ˜κΈ° λ•Œλ¬Έμ΄λ‹€.


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

  // λ³€μˆ˜ 선언문은 κ°’μœΌλ‘œ 평가될 수 μ—†μœΌλ―€λ‘œ ν‘œν˜„μ‹μ΄ μ•„λ‹ˆλ‹€.
  var x;

  // 1, 2, 1+2, x = 1+2 λŠ” λͺ¨λ‘ ν‘œν˜„μ‹μ΄λ‹€.
  // x = 1+2 λŠ” ν‘œν˜„μ‹μ΄λ©΄μ„œ μ™„μ „ν•œ 문이기도 ν•˜λ‹€.
  x = 1+2;

λ¬Έμ—λŠ” ν‘œν˜„μ‹μΈ λ¬Έκ³Ό ν‘œν˜„μ‹μ΄ μ•„λ‹Œ 문이 μžˆλ‹€. 두 문을 κ΅¬λ³„ν•˜λŠ” κ°„λ‹¨ν•œ 방법은 λ³€μˆ˜μ— ν• λ‹Ήν•΄ λ³΄λŠ”κ²ƒμ΄λ‹€.

🧐 μ™„λ£Œ κ°’(completion value) μ΄λž€?

크둬 개발자 λ„κ΅¬μ—μ„œ ν‘œν˜„μ‹μ΄ μ•„λ‹Œ 문을 μ‹€ν–‰ν•˜λ©΄ μ–Έμ œλ‚˜ undefinedλ₯Ό 좜λ ₯ν•œλ‹€. 이λ₯Ό μ™„λ£Œ 값이라고 ν•œλ‹€. μ™„λ£Œ 값은 ν‘œν˜„μ‹μ˜ 평가 κ²°κ³Όκ°€ μ•„λ‹ˆλ‹€.

profile
μ΄μ‚¬μ€‘μž…λ‹ˆλ‹€!🌟https://velog.io/@devkyoung2

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보