2025. 8. 12. 01:29γFront-end/JavaScript

ννμκ³Ό λ¬Έμ μ 리νλ€λ³΄λκΉ ν·κ°λ¦¬κΈ° μμνλ€.
μ νν λκ° ννμμ΄κ³ λκ° λ¬ΈμΈκ°
a = 1 // ννμ
a = 1; // λ¬ΈμΌλ‘ μ°μΈ ννμ
var a; // μ μΈλ¬Έ (ννμx)
var a = 1; // λ³μ μ μΈλ¬Έ (ννμx)
λ μ©~~ κ·Έλμ λ μ 리ν΄λ΄€λ€.
| ννμ | λ¬Έ | ||||
| ⋅ κ°μ΄ λλ€. ⋅ νκ°νλ©΄ κ²°κ³Όκ°μ΄ λμ¨λ€ ⋅ λ€λ₯Έ ννμ μμ λ€μ΄κ° μ μλ€ |
⋅ λμμ 'μ§μ'νλ€ ⋅ νλ‘κ·Έλ¨μ νλ¦ μ μ΄, λ³μ μ μΈ λ±μ΄ κ°λ₯νλ€ ⋅ ννμμ ν¬ν¨ν μ μλ€ |
||||
| μ½λ | μ€λͺ | νκ° κ²°κ³Ό | μ½λ | μ€λͺ | κ° λ°ν μ¬λΆ |
| 1 + 2 | μ«μ λ§μ ννμ | 3 | var a; | λ³μ μ μΈλ¬Έ | β |
| 'hello' | λ¬Έμμ΄ λ¦¬ν°λ΄ ννμ | 'hello' | if (a>0) { ... } | 쑰건문 | β |
| a = 1 | ν λΉ ννμ | 1 | for (...) { ... } | λ°λ³΅λ¬Έ | β |
| true && false | λ Όλ¦¬ AND ννμ | false | a = 1; | ννμ λ¬Έ | β |
| var a = 1; | λ³μ μ μΈλ¬Έ | β | |||
μλ°μ€ν¬λ¦½νΈλ ECMAScript λͺ μΈμ λ°λΌ μ½λλ₯Ό λ¬Έκ³Ό ννμμΌλ‘ νμ±νλ€.
- var : μ μΈλ¬Έμ λ§λλ ν€μλλ‘, varλ₯Ό λ§λλ μκ° ν΄λΉ μ½λλ λ¬ΈμΌλ‘ ν΄μλλ€.→ λ€λ₯Έ ννμμ λ€μ΄κ° μ μμ
- μΈλ―Έμ½λ‘ (;) : λ¬Έμ λλ΄λ ν ν°μΌλ‘, νμκ° μΈλ―Έμ½λ‘ μ λ§λλ©΄ 'μ¬κΈ°κΉμ§κ° ν λ¬Έμ΄κ΅¬λ'νκ³ λλλ€.
μμ§μ νμ± κ³Όμ μ μλμ κ°μ΄ μ§νλλ€.
- ν ν°ν (Tokenize)
- a = 1; → Identifier(a), =, NumericLiteral(1), ;
- νμ± (Parse)
- ν ν°μ *AST(Abstract Syntax Tree)λ‘ λ³ν
- a = 1μ AssignmentExpression λ
Έλλ‘,
λ€μ μΈλ―Έμ½λ‘ μ΄ λΆμΌλ©΄ ExpressionStatement λ Έλλ‘ κ°μ
- μ€ν (Execute)
- ExpressionStatementλ μ€ννλ, λ°νκ°μ λ²λ¦Ό
*ASTλ μΆμ λ¬Έλ² νΈλ¦¬μ μ½μλ‘, μμ€ μ½λλ₯Ό ꡬ쑰μ μΌλ‘ ννν νΈλ¦¬ ννμ μλ£κ΅¬μ‘°μ΄λ€.
μ½λμ λ¬Έλ² κ΅¬μ‘°λ₯Ό λ Έλ(node)μ κ°μ§(branch)λ‘ λλμ΄ μΆμνν΄μ νννλ€.
μλ°μ€ν¬λ¦½νΈ μμ§, λꡬλ€(Babel, ESLint, TypeScript μ»΄νμΌλ¬ λ±)μ΄ ASTλ‘ μ½λλ₯Ό κ²μ¬νκ³ μμ νλ€.
let a = 1 + 2;
VariableDeclaration // λ³μ μ μΈ
ββ Identifier: a // λ³μ μ΄λ¦
ββ BinaryExpression (+) //λνκΈ° μ°μ°
ββ NumericLiteral: 1 // νΌμ°μ°μ
ββ NumericLiteral: 2 // νΌμ°μ°μ
AST Explorerκ°μ AST μκ°ν λꡬλ₯Ό μ¬μ©ν΄μ λ€μν μΈμ΄μ ASTλ₯Ό λ³Ό μ μλ€.
μ°Έκ³
Expressions and operators - JavaScript | MDN
This chapter describes JavaScript's expressions and operators, including assignment, comparison, arithmetic, bitwise, logical, string, ternary and more.
developer.mozilla.org
μλ°μ€ν¬λ¦½νΈ 5μ₯ ννμ κ³Ό λ¬Έ
μλ°μ€ν¬λ¦½νΈ μμ§μ μ½λλ₯Ό μ€ννκΈ° μν΄ λ¨Όμ λ¬Έ(statement) λ¨μλ‘ κ΅¬λΆνκ³ , κ° λ¬Έμ ννμ(expression) μΌλ‘ λλμ΄ ν΄μν©λλ€. ννμμ κ°μΌλ‘ νκ°λ μ μλ λ¬Έμ μΌλΆλΆμ΄λ©°, λ¬Έμ νλ‘κ·Έ
velog.io
[λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive] 5μ₯ ννμκ³Ό λ¬Έ
κ°κ°(value)μ μ(ννμ, expression)μ΄ νκ°(evaluate)λμ΄ μμ±λ κ²°κ³Όλ₯Ό λ§νλ€. νκ°λ μμ ν΄μν΄μ κ°μ μμ±νκ±°λ μ°Έμ‘°νλ κ²μ μλ―Ένλ€. μλ₯Ό λ€μ΄ '10 + 20'μ΄λΌλ μμ νκ°λμ΄ μ«μ κ° 30
valur.tistory.com
'Front-end > JavaScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [WIP] defer π async π DOMContentLoaded (1) | 2025.08.14 |
|---|---|
| Undefined vs null vs NaN (3) | 2025.08.12 |
| B7 : 쑰건문 (3) | 2025.08.12 |
| B6 : ꡬ문과 μ°μ°μ (9) | 2025.08.11 |
| μλ°μ€ν¬λ¦½νΈ λͺ¨λ μμ€ν (4) | 2025.08.08 |
GitHub