Syntax Basic - wooyeonhui/Yeonny GitHub Wiki

== Hello WorldΒΆ ↑

JavasciptλŠ” interactive ν•œ μ›ΉνŽ˜μ΄μ§€ μž‘μ„±μ„ κ°€λŠ₯ν•˜κ²Œ ν•œλ‹€. 예λ₯Ό λ“€λ©΄, 이벀트(e.g.λ²„νŠΌν΄λ¦­, μ›ΉνŽ˜μ΄μ§€ λ‘œλ”© μ™„λ£Œ λ“±)에 λ°˜μ‘ν•˜μ—¬ HTMLμš”μ†Œμ— μ ‘κ·Όν•˜κ³  HTML μš”μ†Œλ₯Ό μ‘°μž‘ν•  수 μžˆλ‹€. 정적인 HTML을 λ™μ μœΌλ‘œ λ³€κ²½ν•  수 μžˆλŠ” μœ μΌν•œ 방법은 Javascriptλ₯Ό μ‚¬μš©ν•˜λŠ” 것이닀.

HTML은 μ›ΉνŽ˜μ΄μ§€μ˜ λ‚΄μš©(Content)κ³Ό ꡬ쑰(Structure)을 λ‹΄λ‹Ήν•œλ‹€. Javascript의 역할은 정적인 HTML을 λ™μ μœΌλ‘œ λ³€κ²½ν•˜λŠ” 것이닀. 즉 HTMLκ³Ό JavascriptλŠ” μ—­ν• (관심사 Concern)이 λ‹€λ₯΄λ―€λ‘œ λΆ„λ¦¬λœ 파일둜 μž‘μ„±ν•˜λŠ” 것이 λ°”λžŒμ§ν•˜λ‹€.

λΈŒλΌμš°μ €λŠ” μ‹€ν–‰μˆœμ„œ

1. script μš”μ†Œλ₯Ό λ§Œλ‚˜λ©΄ μ›ΉνŽ˜μ΄μ§€μ˜ νŒŒμ‹±μ„ μž μ‹œ μ€‘λ‹¨ν•œλ‹€.
2. src μ–΄νŠΈλ¦¬λ·°νŠΈμ— μ •μ˜λœ μžλ°”μŠ€ν¬λ¦½νŠΈ νŒŒμΌμ„ λ‘œλ“œν•œ ν›„ μ‹€ν•Έν•œλ‹€.
3. μ€‘λ‹¨λœ μ›ΉνŽ˜μ΄μ§€μ˜ νŒŒμ‹±μ„ 계속 μ§„ν–‰ν•œλ‹€.

bodyμš”μ†Œμ˜ κ°€μž₯ μ•„λž˜μ— 슀크립트λ₯Ό μœ„μΉ˜μ‹œν‚€λŠ” 것은 쒋은 아이디어이닀. HTML μš”μ†Œλ“€μ΄ 슀크립트 λ‘œλ”© μ§€μ—°μœΌλ‘œ 인해 λ Œλ”λ§μ— μ§€μž₯ λ°›λŠ” 일이 λ°œμƒν•˜μ§€ μ•Šμ•„ νŽ˜μ΄μ§€ λ‘œλ”© μ‹œκ°„μ΄ λ‹¨μΆ•λœλ‹€.

이와같은 슀크립트 λ‘œλ”© μ§€μ—°μœΌλ‘œ μΈν•œ 병λͺ© ν˜„μƒμ„ 근본적으둜 λ°©μ§€ν•˜κΈ° μœ„ν•΄ HTML5λΆ€ν„° script νƒœν¬μ— async와 defer μ–΄νŠΈλ¦¬λ·°νŠΈκ°€ μΆ”κ°€λ˜μ—ˆλ‹€.

<script async src="extern.js"></script>
<script defer src="extern.js"></script>

async와 defer μ–΄νŠΈλ¦¬λ·°νŠΈλŠ” μ›ΉνŽ˜μ΄μ§€ νŒŒμ‹±κ³Ό μ™ΈλΆ€ 슀크립트 파일의 λ‹€μš΄λ‘œλ“œκ°€ λ™μ‹œμ— μ§„ν–‰λœλ‹€λŠ” λ©΄μ—μ„œλŠ” λ™μΌν•˜λ‹€. ν•˜μ§€λ§Œ 슀크립트의 μ‹€ν–‰ μ‹œμ μ΄ λ‹€λ₯΄λ‹€. 

async
- μ›ΉνŽ˜μ΄μ§€ νŒŒμ‹±κ³Ό μ™ΈλΆ€ 슀크립트 파일의 λ‹€μš΄λ‘œλ“œκ°€ λ™μ‹œμ— μ§„ν–‰λœλ‹€. μŠ€ν¬λ¦½νŠΈλŠ” λ‹€μš΄λ‘œλ“œ μ™„λ£Œ 직후 μ‹€ν–‰λœλ‹€. IE9 μ΄ν•˜ 버전은 μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€.

=== γ…‘γ…‘ΒΆ ↑

=== γ…‘γ…‘ γ…‘ ΒΆ ↑

defer
- μ›ΉνŽ˜μ΄μ§€ νŒŒμ‹±κ³Ό μ™ΈλΆ€ 슀크립트 파일의 λ‹€μš΄λ‘œλ“œκ°€ λ™μ‹œμ— μ§„ν–‰λœλ‹€. μŠ€ν¬λ¦½νŠΈλŠ” μ›ΉνŽ˜μ΄μ§€ νŒŒμ‹± μ™„λ£Œ 직후 μ‹€ν–‰λœλ‹€. IE9μ΄ν•˜ λ²„μ „μ—μ„œ μ •μƒμ μœΌλ‘œ λ™μž‘ν•˜μ§€ μ•Šμ„ 수 μžˆλ‹€.

=== γ…‘ γ…‘ΒΆ ↑

=== γ…‘γ…‘γ…‘ΒΆ ↑

=== Javascript OutputΒΆ ↑

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ dataλ₯Ό ν‘œμ‹œν•˜λŠ” 방법은 μ•„λž˜μ™€ κ°™λ‹€.

Type               Code

γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…—γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘γ…‘alert bod alert() HTML output document.write() HTML element innerHTML Browser console console.log()

=== ꡬ문 (Statement)ΒΆ ↑

ν”„λ‘œκ·Έλž¨(슀크립트)은 컴퓨터(Client-side-Javascript의 경우, μ—„λ°€νžˆ λ§ν•˜λ©΄ μ›Ή λΈŒλΌμš°μ €)에 μ˜ν•΄ μˆ˜ν–‰λ  λͺ…λ Ήλ“€μ˜ 집합이닀. 각각의 λͺ…령을 statement(ꡬ문)이라 ν•˜λ©° statementκ°€ μ‹€ν–‰λ˜λ©΄ 무슨 일인가가 μΌμ–΄λ‚˜κ²Œ λœλ‹€. ꡬ문은 κ°’(Value), μ—°μ‚°μž(Operator), ν‘œν˜„μ‹(Expression), ν‚€μ›Œλ“œ(Keyword), 주석(Comment)으둜 κ΅¬μ„±λ˜λ©° μ„Έλ―Έμ½œλ‘ (;)으둜 λλ‚˜μ•Ό ν•œλ‹€.

ꡬ문은 code block({…})으둜 κ·Έλ£Ήν™”ν•  수 μžˆλ‹€. κ·Έλ£Ήν™”μ˜ λͺ©μ μ€ ν•¨κ»˜ μ‹€ν–‰λ˜μ Έμ•Ό ν•˜λŠ” ꡬ문을 μ •μ˜ν•˜κΈ° μœ„ν•¨μ΄λ‹€.(e.g. function)

ꡬ문듀은 λŒ€κ°œ μœ„μ—μ„œ μ•„λž˜λ‘œ μˆœμ„œλŒ€λ‘œ μ‹€ν–‰λœλ‹€. μ΄λŸ¬ν•œ μ‹€ν–‰ μˆœμ„œλŠ” 쑰건문(if,switch)μ΄λ‚˜ 반볡문(while,for)의 μ‚¬μš©μœΌλ‘œ μ œμ–΄λ  수 있으며(이λ₯Ό Control Flow/νλ¦„μ œμ–΄λΌ ν•œλ‹€), λ˜λŠ” ν•¨μˆ˜ 호좜둜 변경될 수 μžˆλ‹€.

λ‹€λ₯Έ 언어와 달리 μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” 블둝 μœ νš¨λ²”μœ„(Block-level scope)λ₯Ό μƒμ„±ν•˜μ§€ μ•ŠλŠ”λ‹€. ν•¨μˆ˜ λ‹¨μœ„μ˜ μœ νš¨λ²”μœ„(Function-level scope)만이 μƒμ„±λœλ‹€.

ν‘œν˜„μ‹(Expression)은 κ°’, λ³€μˆ˜, μ—°μ‚°μžμ˜ 쑰합이며 이 쑰합은 연산ㄴ을 톡해 ν•˜λ‚˜μ˜ 값을 λ§Œλ“ λ‹€. 즉, ν‘œν˜„μ‹μ€ ν•˜λ‚˜μ˜ κ°’μœΌλ‘œ 평가될 수 μžˆλŠ” λ¬Έμž₯이닀. μ•„λž˜μ˜ μ˜ˆμ—μ„œ 5*10은 50으둜 평가(μ—°μ‚°)λœλ‹€.

Programming languageμ—μ„œ λ³€μˆ˜λŠ” κ°’(value)을 μ €μž₯(ν• λ‹Ή), μ°Έμ‘°ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€. ν•œλ²ˆ μ“°κ³  λ²„λ¦¬λŠ” 값이 μ•„λ‹Œ μœ μ§€ν•  ν•„μš”κ°€ μžˆλŠ” κ°’μ˜ 경우, λ³€μˆ˜λ₯Ό μ‚¬μš©ν•œλ‹€. λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ var keywordκ°€ μ‚¬μš©λœλ‹€. λ“±ν˜Έ(=, equal sign)λŠ” λ³€μˆ˜μ— 값을 ν• λ‹Ήν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€. μ•„λž˜μ˜ μ˜ˆμ—μ„œ xλŠ” λ³€μˆ˜λ‘œ μ„ μ–Έλ˜μ—ˆκ³  λ³€μˆ˜ xμ—λŠ” μ •μˆ˜κ°’ 6이 ν• λ‹Ήλ˜μ—ˆλ‹€.

<java>

String str = "Hello World";
<1>    <2>    <3>

μœ„μ˜ javaμ˜ˆμ œμ—μ„œ <1>은 데이터 νƒ€μž…, <@>λŠ” λ³€μˆ˜λͺ…,<3>은 λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄(literal)이닀. λ¦¬ν„°λŸ΄(literal)μ΄λž€ λ³€μˆ˜ λ˜λŠ” μƒμˆ˜μ— μ €μž₯λ˜λŠ” κ°’ 자체λ₯Ό μ˜λ―Έν•œλ‹€. λ³€μˆ˜λͺ…은 λ©”λͺ¨λ¦¬μ— ν• λ‹Ήλœ 곡간을 κ°€λ¦¬ν‚€λŠ” μ‹λ³„μž(identifier)이며 λ¦¬ν„°λŸ΄μ€ 이 곡간에 μ €μž₯λ˜λŠ” 값이닀.

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 7κ°€μ§€ 데이터 νƒ€μž…μ„ μ œκ³΅ν•œλ‹€.

    • κΈ°λ³Έ μžλ£Œν˜•(primitive data type)

      • Boolean

      • null

      • undefined

      • Number

      • String

      • Symbol(New in ECMAScript 6)

    • Object

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μžλ°”μ™€λŠ” 달리 κ°’μ˜ μžλ£Œν˜•μ— 따라 λ³€μˆ˜μ— 데이터 νƒ€μž…μ„ λͺ…μ‹œν•˜μ§€ μ•ŠλŠ”λ‹€.

μ—°μ‚°μž(Operator)

- μ—°μ‚°μžλŠ” ν•˜λ‚˜ ν˜Ήμ€ κ·Έ μ΄μƒμ˜ 값을 ν•˜λ‚˜μ˜ κ°’μœΌλ‘œ λ§Œλ“€ λ•Œ μ‚¬μš©ν•œλ‹€.

ν‚€μ›Œλ“œ(keyword)λŠ” μˆ˜ν–‰λ˜μ–΄μ Έμ•Όν•  λ™μž‘μ„ κ·œμ •ν•œ 것이닀. 예λ₯Ό λ“€μ–΄ var keywordλŠ” λΈŒλΌμš°μ €μ—κ²Œ μƒˆλ‘œμš΄ λ³€μˆ˜λ₯Ό 생성할 것을 μ§€μ‹œν•œλ‹€.

주석(Comment)

- 주석은 μž‘μ„±λœ μ½”λ“œμ˜ 의미λ₯Ό μ„€λͺ…ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€. μ½”λ“œλŠ” 읽기(μ΄ν•΄ν•˜κΈ°) μ‰¬μ›Œμ•Ό ν•œλ‹€.(가독성이 μ’‹μ•„μ•Ό ν•œλ‹€.)

ν•œμ€„μ£Όμ„// μ—¬λŸ¬μ€„ /* */

⚠️ **GitHub.com Fallback** ⚠️