πŸ”€ Language/JavaScript

[Language/JavaScript] 언어적 νŠΉμ§•

TerryEHLee 2023. 4. 11. 09:27

μ •μ˜

μ›ΉνŽ˜μ΄μ§€μ— 생동감을 λΆˆμ–΄λ„£κΈ° μœ„ν•΄ λ§Œλ“€μ–΄μ§„ μ–Έμ–΄

scipt

  • JavaScript둜 μž‘μ„±ν•œ ν”„λ‘œκ·Έλž¨
  • μ›ΉνŽ˜μ΄μ§€μ˜ HTML μ•ˆμ— μž‘μ„±κ°€λŠ₯
  • μ›ΉνŽ˜μ΄μ§€ 뢈러올 λ•Œμ— μžλ™μœΌλ‘œ script μ‹€ν–‰
  • νŠΉλ³„ν•œ μ€€λΉ„ 및 컴파일 없이 문자 ν˜•νƒœλ‘œ μž‘μ„± 및 μ‹€ν–‰ κ°€λŠ₯

μ—”μ§„: λΈŒλΌμš°μ €μ— λ‚΄μž₯λ˜μ–΄ μžˆλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ 가상 λ¨Έμ‹ 

  • V8: Chorme, Opera
  • SpiderMonkey: Firefox
  • Microsoft Edge: ChakraCore
  • SquirelFish: Safari

μ—”μ§„μ˜ λ™μž‘μ›λ¦¬

  1. νŒŒμ‹±: 엔진이 슀크립트λ₯Ό 읽음
  2. 컴파일: 읽어 듀인 슀크립트λ₯Ό κΈ°κ³„μ–΄λ‘œ μ „ν™˜
  3. κΈ°κ³„μ–΄λ‘œ μ „ν™˜λœ μ½”λ“œ μ‹€ν–‰(μ „ν™˜ λ˜μ—ˆκΈ°μ— μ‹€ν–‰ 속도가 빠름)

엔진이 각 ν”„λ‘œμ„ΈμŠ€ λ§ˆλ‹€ μ΅œμ ν™”λ₯Ό μ§„ν–‰ν•˜μ—¬μ„œ 싀행속도가 빠름.

λΈŒλΌμš°μ €μ—μ„œ ν•  수 μžˆλŠ” 일

  • νŽ˜μ΄μ§€μ— μƒˆλ‘œμš΄ HTML μΆ”κ°€ 및 μˆ˜μ •
  • μ‚¬μš©μž 행동에 λ°˜μ‘(클릭, ν‚€λ³΄λ“œ μž…λ ₯ λ“±)
  • λ„€νŠΈμ›Œν¬ 톡해 원격 μ„œλ²„μ— μš”μ²­ 보냄, 파일 λ‹€μš΄λ‘œλ“œ, μ—…λ‘œλ“œ(AJAX, COMET)
  • μΏ ν‚€ κ°€μ Έμ˜€κ±°λ‚˜ μ„€μ •, μ‚¬μš©μžμ—κ²Œ μ§ˆλ¬Έμ„ κ±΄λ„€κ±°λ‚˜ λ©”μ‹œμ§€ 보여주기
  • ν΄λΌμ΄μ–ΈνŠΈ 츑에 데이터 μ €μž₯(둜컬 μŠ€ν† λ¦¬μ§€)

λΈŒλΌμš°μ €μ—μ„œ ν•  수 μ—†λŠ” 일

λ³΄μ•ˆ 이슈둜 μΈν•œ κΈ°λŠ₯ μ œμ•½

  • λ””μŠ€ν¬μ— μ €μž₯ 된 파일 μ ‘κ·Ό
  • λΈŒλΌμš°μ € λ‚΄ νƒ­κ³Ό 창은 μ„œλ‘œμ˜ 정보λ₯Ό κ³΅μœ ν•˜μ§€ μ•ŠμŒ
  • 타 μ‚¬μ΄νŠΈλ‚˜ λ„λ©”μΈμ—μ„œ 데이터 λ°›μ•„μ˜€κΈ°

강점

  • HTML/CSS와 μ™„μ „ν•œ 톡합
  • κ°„λ‹¨ν•˜κ²Œ 처리 κ°€λŠ₯ν•œ μ˜μ—­μ΄ 있음
  • λͺ¨λ“  μ£Όμš” λΈŒλΌμš°μ €μ˜ κΈ°λ³Έ μ–Έμ–΄

트랜슀파일 κ°€λŠ₯ μ–Έμ–΄

  • CoffeScript: syntactic sugar. Ruby와 ν˜Έν™˜μ„± μ’‹μŒ
  • TypeScript: μžλ£Œν˜•μ˜ λͺ…μ‹œν™”. Microsoft 개발
  • Flow: μžλ£Œν˜• κ°•μ œ. Facebook 개발
  • Dart: λΈŒλΌμš°μ €κ°€ μ•„λ‹Œ ν™˜κ²½μ—μ„œ λ™μž‘(λͺ¨λ°”일...). Google 개발

μš”μ•½

Keyword: HTML, CSS, μ›Ή λΈŒλΌμš°μ €, 인터프리터 μ–Έμ–΄, λŸ°νƒ€μž„, μžλ°”μŠ€ν¬λ¦½νŠΈ μ—”μ§„, node.js, λ©€ν‹° νŒ¨λŸ¬λ‹€μž„, νƒ€μž…, λ©”λͺ¨λ¦¬

Javascriptλž€ μ›ΉνŽ˜μ΄μ§€μ— 생동감을 λΆˆμ–΄λ„£κΈ° μœ„ν•΄ λ§Œλ“€μ–΄μ§„ μ–Έμ–΄λ‘œ HTMLκ³Ό CSS와 μ™„μ „ν•œ 톡합을 μ΄λ£¨λŠ” 강점을 μ§€λ‹Œλ‹€.
μ½”λ“œλ₯Ό κΈ°κ³„μ–΄λ‘œ λ°”κΎΈλŠ” 컴파일 과정이 없기에 μ‹€ν–‰ 속도가 느리고, λŸ°νƒ€μž„μ—λŸ¬κ°€ λ°œμƒ ν•  μœ„ν—˜μ„ κ°€μ§€κ³  μžˆλŠ” 인터프리터 언어이닀.
λ©”λͺ¨λ¦¬ 관리 및 νƒ€μž…μΆ”λ‘ μ„ 자체적으둜 μ–Έμ–΄μ—μ„œ 지원해주어 코딩을 비ꡐ적 νŽΈν•˜κ²Œ ν•  수 μžˆμ§€λ§Œ μ•ˆμ •μ„± 및 μ„±λŠ₯μ—μ„œ 일뢀 손해λ₯Ό λ³Ό 수 μžˆλ‹€.
λ˜ν•œ ν•¨μˆ˜ν˜•, λͺ…λ Ήν˜•, ν”„λ‘œν† νƒ€μž… 기반의 객체 μ§€ν–₯ν˜•μΈ λ©€ν‹° νŒ¨λŸ¬λ‹€μž„ 언어이닀.
λͺ¨λ“  μ£Όμš” λΈŒλΌμš°μ €λ“€μ„ μ§€μ›ν•˜λŠ” 엔진을 κ°€μ§€κ³  있고, 더 λ‚˜μ•„κ°€ node.jsλ₯Ό μ‚¬μš©ν•˜μ—¬ μ„œλ²„ 개발이 κ°€λŠ₯ν•˜λ‹€λŠ” μž₯점을 μ§€λ‹Œλ‹€.

reference
https://ko.javascript.info/intro#ref-18