JiYoung Dev πŸ–₯

[μžλ°”μŠ€ν¬λ¦½νŠΈ] μ •μ˜ / μ½”λ“œ μž‘μ„± κ·œμΉ™ / μžλ£Œν˜• / μ—°μ‚°μž λ³Έλ¬Έ

full stack/JavaScript

[μžλ°”μŠ€ν¬λ¦½νŠΈ] μ •μ˜ / μ½”λ“œ μž‘μ„± κ·œμΉ™ / μžλ£Œν˜• / μ—°μ‚°μž

Shinjio 2023. 2. 14. 20:59

μžλ°”μŠ€ν¬λ¦½νŠΈ(JavaScript) - 2023.2.14 ν•™μŠ΅ λ‚΄μš©

참고자료:

https://ko.javascript.info/

https://developer.mozilla.org/ko/docs/Web/JavaScript

 

JavaScript | MDN

JavaScript (JS)λŠ” κ°€λ²Όμš΄, 인터프리터 ν˜Ήμ€ just-in-time 컴파일 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘œ, 일급 ν•¨μˆ˜λ₯Ό μ§€μ›ν•©λ‹ˆλ‹€. μ›Ή νŽ˜μ΄μ§€λ₯Ό μœ„ν•œ 슀크립트 μ–Έμ–΄λ‘œ 잘 μ•Œλ €μ Έ μžˆμ§€λ§Œ, Node.js, Apache CouchDB, Adobe Acrobat처럼

developer.mozilla.org

 

λͺ¨λ˜ JavaScript νŠœν† λ¦¬μ–Ό

 

ko.javascript.info

 

1. μ •μ˜

 

- HTMLκ³Ό CSS와 ν•¨κ»˜ ν΄λΌμ΄μ–ΈνŠΈ μΈ‘ μ›Ήν”„λ‘œκ·Έλž˜λ°μ„ ν•  수 μžˆλ„λ‘ λ•λŠ” ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄

* HTML : μ›Ή μ½˜ν…μΈ μ˜ ꡬ쑰λ₯Ό 짜고 의미λ₯Ό λΆ€μ—¬ν•˜λŠ” λ§ˆν¬μ—… μ–Έμ–΄ | μ–΄λ””κ°€ 문단이고, 헀딩인지, ν‘œμΈμ§€ λ“± μ •μ˜
* CSS : HTML μ½˜ν…μΈ μ— μŠ€νƒ€μΌμ„ μ μš©ν•  수 μžˆλŠ” μŠ€νƒ€μΌ κ·œμΉ™ μ–Έμ–΄ | 배경색 μΆ”κ°€, κΈ€κΌ΄ λ³€κ²½, λ ˆμ΄μ•„μ›ƒ 배치 λ“±
* JavaScript :  λ™μ μœΌλ‘œ μ½˜ν…μΈ λ₯Ό λ°”κΎΈκ³ , λ©€ν‹°λ―Έλ””μ–΄λ₯Ό μ œμ–΄ν•˜κ³ , μ• λ‹ˆλ©”μ΄μ…˜μ„ μΆ”κ°€ν•˜λŠ” λ“± 거의 λͺ¨λ“  것을 λ§Œλ“€ 수 μžˆλŠ” μŠ€ν¬λ¦½νŒ… μ–Έμ–΄

- μ›ΉνŽ˜μ΄μ§€μ—μ„œ λ³΅μž‘ν•œ κΈ°λŠ₯을 κ΅¬ν˜„ν•  수 μžˆλ„λ‘ ν•˜λŠ” μŠ€ν¬λ¦½νŒ… μ–Έμ–΄ λ˜λŠ” ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ 

JavaScriptμ—μ„œλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ‘œκ·Έλž˜λ° μΈν„°νŽ˜μ΄μŠ€(API)κ°€ 특히 κ°•λ ₯ν•œ κΈ°λŠ₯
APIλŠ” κ°œλ°œμžκ°€ 직접 κ΅¬ν˜„ν•˜κΈ° μ–΄λ ΅κ±°λ‚˜ λΆˆκ°€λŠ₯ν•œ κΈ°λŠ₯듀을 미리 λ§Œλ“€μ–΄μ„œ μ œκ³΅ν•˜λŠ” κ²ƒμœΌλ‘œ 
λΈŒλΌμš°μ € API와 μ„œλ“œνŒŒν‹° API둜 ꡬ뢄됨
1) λΈŒλΌμš°μ € API : μ›ΉλΈŒλΌμš°μ €μ— λ‚΄μž₯됨 API둜 DOM, Geolocation API, Canvas, WebGL API 등이 있음 
2) μ„œλ“œνŒŒν‹° API : λΈŒλΌμš°μ €μ— νƒ‘μž¬λ˜μ§€ μ•Šμ€ API둜 Twitter API, Google 지도 API, OpenStreetMap API 등이 있음

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

- μ›λž˜λŠ” λΈŒλΌμš°μ €μ—μ„œλ§Œ μ“Έ λͺ©μ μœΌλ‘œ κ³ μ•ˆλœ μ–Έμ–΄μ΄μ§€λ§Œ ν˜„μž¬λŠ” μ•± 개발, 블둝체인, VR/AR λ“± λ‹€μ–‘ν•œ ν™˜κ²½μ—μ„œ μ“°μž„

- C, C++, μžλ°”μ™€ 같은 전톡적인 언어에 λΉ„ν•΄ 문법이 쉽고 λΈŒλΌμš°μ €μ—μ„œ λ°”λ‘œ μ‹€ν–‰ν•  수 있음

- μžλ°”μŠ€ν¬λ¦½νŠΈλ‘œ μž‘μ„±ν•œ ν”„λ‘œκ·Έλž¨μ„ '슀크립트(script)라 함

- μ›ΉνŽ˜μ΄μ§€μ˜ HTML μ•ˆμ— μž‘μ„±ν•  수 μžˆλŠ”λ°, μ›ΉνŽ˜μ΄μ§€λ₯Ό λΆˆμ–΄μ˜¬ λ•Œ μŠ€ν¬λ¦½νŠΈκ°€ μžλ™μœΌλ‘œ μ‹€ν–‰

- λΈŒλΌμš°μ €λΏλ§Œ μ•„λ‹ˆλΌ μ„œλ²„μ—μ„œλ„ μ‹€ν–‰ν•  수 있으며,

- μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진(JavaScript engine)이라 λΆˆλ¦¬λŠ” νŠΉλ³„ν•œ ν”„λ‘œκ·Έλž¨μ΄ λ“€μ–΄μžˆλŠ” λͺ¨λ“  λ””λ°”μ΄μŠ€μ—μ„œλ„ λ™μž‘ κ°€λŠ₯

  → λΈŒλΌμš°μ €μ—λŠ” 'μžλ°”μŠ€ν¬λ¦½νŠΈ 가상 λ¨Έμ‹ '이라 λΆˆλ¦¬λŠ” 엔진이 λ‚΄μž₯λ˜μ–΄ 있음

  → μ—”μ§„μ˜ μ’…λ₯˜λŠ” λ‹€μ–‘ν•œλ°, μ—”μ§„λ§ˆλ‹€ 특유의 μ½”λ“œλ„€μž„μ΄ 있음

  → μ½”λ“œλ„€μž„μ€ 개발 κ΄€λ ¨ κΈ€μ—μ„œ μ’…μ’… μ–ΈκΈ‰λ˜λ―€λ‘œ μ•Œμ•„λ‘λ©΄ μ’‹μŒ

  → (예) "XλΌλŠ” κΈ°λŠ₯은 V8μ—μ„œλ§Œ μ§€μ›ν•©λ‹ˆλ‹€."라고 ν•˜λ©΄ Chromeκ³Ό Operaμ—μ„œλ§Œ 이 κΈ°λŠ₯을 μ§€μ›ν•œλ‹€κ³  μ΄ν•΄ν•˜λ©΄ 됨

  → V8 - Chrome, Opera / SpiderMonkey - Firefox / ChakraCore - Microsoft Edge / SquirrelFish - Safari λ“±

  → 엔진 λ™μž‘ κ³Όμ •

       μ—”진이 슀크립트λ₯Ό 읽음(νŒŒμ‹±)

      β–Ά 읽어듀인 슀크립트λ₯Ό κΈ°κ³„μ–΄λ‘œ μ „ν™˜(컴파일)

      β–Ά κΈ°κ³„μ–΄λ‘œ μ „ν™˜λœ μ½”λ“œ μ‹€ν–‰. κΈ°κ³„μ–΄λ‘œ μ „ν™˜λ˜μ–΄ μ‹€ν–‰ 속도가 빠름

 

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

- λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 'μ•ˆμ „ν•œ' ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄

- λ©”λͺ¨λ¦¬λ‚˜ CPU 같은 μ €μˆ˜μ€€ μ˜μ—­μ˜ μ‘°μž‘μ„ ν—ˆμš©ν•˜μ§€ μ•ŠμŒ

   WHY? μ• μ΄ˆμ— μ΄λŸ¬ν•œ 접근이 ν•„μš”μΉ˜ μ•Šμ€ λΈŒλΌμš°μ €λ₯Ό λŒ€μƒμœΌλ‘œ λ§Œλ“  언어이기 λ•Œλ¬Έ

- μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λŠ₯λ ₯은 μ‹€ν–‰ ν™˜κ²½μ— μƒλ‹Ήν•œ 영ν–₯을 λ°›μŒ

  → Node.js ν™˜κ²½μ—μ„œλŠ” μž„μ˜μ˜ νŒŒμΌμ„ μ½κ±°λ‚˜ μ“°κ³ , λ„€νŠΈμ›Œν¬ μš”μ²­μ„ μˆ˜ν–‰ν•˜λŠ” ν•¨μˆ˜λ₯Ό 지원

  → λΈŒλΌμš°μ € ν™˜κ²½μ—μ„  μ›ΉνŽ˜μ΄μ§€ μ‘°μž‘, ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„μ˜ μƒν˜Έμž‘μš©μ— κ΄€ν•œ λͺ¨λ“  일을 ν•  수 있음

 

       * νŽ˜μ΄μ§€μ— μƒˆλ‘œμš΄ HTML을 μΆ”κ°€ν•˜κ±°λ‚˜ κΈ°μ‘΄ HTML, ν˜Ήμ€ μŠ€νƒ€μΌ μˆ˜μ •ν•˜κΈ°

       * 마우슀 ν΄λ¦­μ΄λ‚˜ ν¬μΈν„°μ˜ μ›€μ§μž„, κΈ°λ³΄λ“œ ν‚€ 눌림 λ“±κ³Ό 같은 μ‚¬μš©μž 행동에 λ°˜μ‘ν•˜κΈ°

       * λ„€νŠΈμ›Œν¬λ₯Ό 톡해 원격 μ„œλ²„μ— μš”μ²­μ„ λ³΄λ‚΄κ±°λ‚˜, 파일 λ‹€μš΄λ‘œλ“œ, μ—…λ‘œλ“œν•˜κΈ°

       * μΏ ν‚€λ₯Ό κ°€μ Έμ˜€κ±°λ‚˜ μ„€μ •ν•˜κΈ°. μ‚¬μš©μžμ—κ²Œ μ§ˆλ¬Έμ„ κ±΄λ„€κ±°λ‚˜ λ©”μ‹œμ§€ 보여주기

       * ν΄λΌμ΄μ–ΈνŠΈ 츑에 데이터 μ €μž₯ν•˜κΈ°(둜컬 μŠ€ν† λ¦¬μ§€)

 

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

- λΈŒλΌμš°μ €λŠ” λ³΄μ•ˆμ„ μœ„ν•΄ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ κΈ°λŠ₯에 μ œμ•½μ„ κ±Έμ–΄λ‘μ—ˆμŒ

- μ΄λŸ¬ν•œ μ œμ•½μ€ μ•…μ„± μ›ΉνŽ˜μ΄μ§€κ°€ κ°œμΈμ •λ³΄μ— μ ‘κ·Όν•˜κ±°λ‚˜ μ‚¬μš©μžμ˜ 데이터λ₯Ό μ†μƒν•˜λŠ” 것을 막기 μœ„ν•΄ λ§Œλ“€μ–΄μ§

  → μ›ΉνŽ˜μ΄μ§€ λ‚΄ μŠ€ν¬λ¦½νŠΈλŠ” λ””μŠ€ν¬μ— μ €μž₯된 μž„μ˜μ˜ νŒŒμΌμ„ μ½κ±°λ‚˜ μ“°κ³ , λ³΅μ‚¬ν•˜κ±°λ‚˜ μ‹€ν–‰ν•  λ•Œ μ œμ•½μ„ 받을 수 있음.

  → μš΄μ˜μ²΄μ œκ°€ μ§€μ›ν•˜λŠ” κΈ°λŠ₯을 λΈŒλΌμš°μ €κ°€ 직접 쓰지 λͺ»ν•˜κ²Œ λ§‰ν˜€μžˆκΈ° λ•Œλ¬Έ

  → λͺ¨λ˜ λΈŒλΌμš°μ €λ₯Ό μ‚¬μš©ν•˜λ©΄ νŒŒμΌμ„ λ‹€λ£° 순 있음. ν•˜μ§€λ§Œ 접근은 μ œν•œλ¨

  → μ‚¬μš©μžκ°€ λΈŒλΌμš°μ €μ°½μ— νŒŒμΌμ„ λ“œλž˜κ·Έν•˜κ±°λ‚˜ inputνƒœκ·Έλ₯Ό 톡해 νŒŒμΌμ„ μ„ νƒν•˜λŠ” λ“± νŠΉμ • μƒν™©μ—μ„œλ§Œ 파일 μ ‘κ·Ό ν—ˆμš©

  → μΉ΄λ©”λΌλ‚˜ 마이크 같은 λ””λ°”μ΄μŠ€μ™€ μƒν˜Έμž‘μš©ν•˜λ €λ©΄ μ‚¬μš©μžμ˜ λͺ…μ‹œμ μΈ ν—ˆκ°€ ν•„μš”

- 동일 좜처 μ •μ±…(Same Origin Policy)

  λΈŒλΌμš°μ € λ‚΄ νƒ­κ³Ό 창은 λŒ€κ°œ μ„œλ‘œμ˜ 정보λ₯Ό μ•Œ 수 μ—†μŒ.

  그런데 μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•΄ ν•œ μ°½μ—μ„œ λ‹€λ₯Έ 창을 μ—΄ λ•ŒλŠ” μ˜ˆμ™Έκ°€ 적용됨.

  ν•˜μ§€λ§Œ 이 κ²½μš°μ—λ„ λ„λ©”μΈμ΄λ‚˜ ν”„λ‘œν† μ½œ, ν¬νŠΈκ°€ λ‹€λ₯΄λ©΄ νŽ˜μ΄μ§€μ— μ ‘κ·Όν•  수 μ—†μŒ 

  이 정책을 ν”Όν•˜λ €λ©΄ 두 νŽ˜μ΄μ§€λŠ” 데이터 κ΅ν™˜μ— λ™μ˜ν•΄μ•Ό ν•˜κ³ ,

  λ™μ˜μ™€ κ΄€λ ¨λœ νŠΉμˆ˜ν•œ μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œλ₯Ό ν¬ν•¨ν•˜κ³  μžˆμ–΄μ•Ό 함

- μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ΄μš©ν•˜λ©΄ νŽ˜μ΄μ§€λ₯Ό μƒμ„±ν•œ μ„œλ²„μ™€ μ‰½κ²Œ 정보λ₯Ό μ£Όκ³  받을 수 있음

  ν•˜μ§€λ§Œ 타 μ‚¬μ΄νŠΈλ‚˜ λ„λ©”μΈμ—μ„œ 데이터λ₯Ό λ°›μ•„μ˜€λŠ” 것은 λΆˆκ°€λŠ₯

  κ°€λŠ₯ν•˜κ²Œ ν•˜λ €λ©΄ 원격 μ„œλ²„μ—μ„œ λͺ…ν™•νžˆ μŠΉμΈμ„ ν•΄μ€˜μ•Ό 함(HTTP 헀더 등을 이용)

 

• κ°•μ 

- HTML/CSS와 μ™„μ „νžˆ 톡합할 수 있음

- κ°„λ‹¨ν•œ 일은 κ°„λ‹¨ν•˜κ²Œ μ²˜λ¦¬ν•  수 있게 ν•΄μ€Œ

- λͺ¨λ“  μ£Όμš” λΈŒλΌμš°μ €μ—μ„œ μ§€μ›ν•˜κ³ , κΈ°λ³Έ μ–Έμ–΄λ‘œ μ‚¬μš©λ¨

 

μœ„μ˜ 세가지λ₯Ό λͺ¨λ‘ μ§€μ›ν•˜λŠ” λΈŒλΌμš°μ € μ—°κ΄€ κΈ°μˆ μ€ μžλ°”μŠ€ν¬λ¦½νŠΈ 밖에 μ—†μŒ

이런 이유둜 λΈŒλΌμš°μ € μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§Œλ“€ λ•Œ μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ κ°€μž₯ 널리 μ‚¬μš©λ˜κ³  있음

이 외에 μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ΄μš©ν•΄ μ„œλ²„λ‚˜ λͺ¨λ°”일 μ•± 등을 λ§Œλ“œλŠ” 것도 κ°€λŠ₯

 

μžλ°”μŠ€ν¬λ¦½νŠΈλ‘œ 트랜슀파일(transpile, λ³€ν™˜)ν•  수 μžˆλŠ” μƒˆλ‘œμš΄ μ–Έμ–΄λ“€

μžλ°”μŠ€ν¬λ¦½νŠΈ μ΄μ™Έμ˜ μ–Έμ–΄λ‘œ μž‘μ„±ν•œ μ½”λ“œλ₯Ό '보이지 μ•ŠλŠ” κ³³μ—μ„œ' μžλ°”μŠ€ν¬λ¦½νŠΈλ‘œ μžλ™ λ³€ν™˜

 

- CoffeeScript

  μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μœ„ν•œ 'syntatic sugar'

  짧은 문법을 λ„μž…ν•˜μ—¬ λͺ…λ£Œν•˜κ³  μ΄ν•΄ν•˜κΈ° μ‰¬μš΄ μ½”λ“œλ₯Ό μž‘μ„±ν•  수 있음

  Ruby κ°œλ°œμžλ“€μ΄ 쒋아함

 

- TypeScript

  κ°œλ°œμ„ λ‹¨μˆœν™”ν•˜κ³  λ³΅μž‘ν•œ μ‹œμŠ€ν…œμ„ μ§€μ›ν•˜λ €λŠ” λͺ©μ μœΌλ‘œ 'μžλ£Œν˜•μ˜ λͺ…μ‹œν™”(strict data typing)에 집쀑해 λ§Œλ“  μ–Έμ–΄

  Microsoft 개발

 

- Flow

  μžλ£Œν˜•μ„ κ°•μ œν•˜λŠ”λ° TypeScriptμ™€λŠ” λ‹€λ₯Έ 방식을 μ‚¬μš©

  Facebook 개발

 

- Dart

  λͺ¨λ°”일앱과 같이 λΈŒλΌμš°μ €κ°€ μ•„λ‹Œ ν™˜κ²½μ—μ„œ λ™μž‘ν•˜λŠ” 고유의 엔진을 가진 λ…μžμ  μ–Έμ–΄

  Google 개발

 

이외에도 λ‹€μ–‘ν•œ μ–Έμ–΄κ°€ μžˆμ§€λ§Œ 개발 μ–Έμ–΄λ‘œ μ΄λŸ¬ν•œ μ–Έμ–΄ 쀑 ν•˜λ‚˜λ₯Ό νƒν•œλ‹€κ³  ν•˜λ”λΌλ„ μžμ‹ μ΄ 무엇을 ν•˜κ³  μžˆλŠ”μ§€ μ΄ν•΄ν•˜λ €λ©΄ κ²°κ΅­μ—” μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ•Œμ•„μ•Ό 함

 

• μ½”λ“œ 에디터(code editor)

ν†΅ν•©κ°œλ°œν™˜κ²½(IDE)κ³Ό κ²½λŸ‰ μ—λ””ν„°λ‘œ λ‚˜λ‰˜λŠ”λ°, λ‘˜ 쀑 ν•˜λ‚˜λ₯Ό 택해 μž‘μ—…

 

ν†΅ν•©κ°œλ°œν™˜κ²½(Intergrated Development Enviroment, IDE)

- κ°•λ ₯ν•œ μ—λ””ν„°λ‘œ 'ν”„λ‘œμ νŠΈ 전체'λ₯Ό κ΄€μž₯ν•˜λŠ” λ‹€μ–‘ν•œ κΈ°λŠ₯을 제곡

- IDEλ₯Ό μ΄μš©ν•˜λ©΄ μˆ˜λ§Žμ€ 파일둜 κ΅¬μ„±λœ ν”„λ‘œμ νŠΈλ₯Ό 뢈러였고, 파일 κ°„μ˜ 탐색 μž‘μ—…μ΄ μˆ˜μ›”ν•΄μ§

- λ‹¨μˆœνžˆ μ—΄λ €μžˆλŠ” 파일뿐만 μ•„λ‹ˆλΌ 전체 ν”„λ‘œμ νŠΈμ— κΈ°λ°˜ν•œ μžλ™ μ™„μ„± κΈ°λŠ₯도 μ‚¬μš©ν•  수 있음 

- gitκ³Ό 같은 버전 관리 μ‹œμŠ€ν…œ, ν…ŒμŠ€νŒ… ν™˜κ²½ λ“± 'ν”„λ‘œμ νŠΈ μˆ˜μ€€'의 μž‘μ—…λ„ ν•  수 있음

- Visual Studio Code, WebStorm

 

κ²½λŸ‰ 에디터(lightweight editor)

- IDE만큼 λ§Žμ€ κΈ°λŠ₯을 μ œκ³΅ν•˜μ§„ μ•Šμ§€λ§Œ, 속도가 λΉ λ₯΄κ³  λ‹¨μˆœν•˜λ‹€λŠ” μž₯점이 있음

- νŒŒμΌμ„ μ—΄κ³  λ°”λ‘œ μˆ˜μ •ν•˜κ³ μž ν•  λ•Œ 주둜 μ‚¬μš© (파일 ν•˜λ‚˜λ§Œ μˆ˜μ •ν•  λ•Œ)

- 디렉터리 레벨 문법 뢄석기, μžλ™μ™„μ„±κΈ°λŠ₯ λ“± λ‹€μ–‘ν•œ ν”ŒλŸ¬κ·ΈμΈμ„ 지원

- Atom, Visual Studio Code, Sublime Text, Notepad++, Vim, Emacs λ“±

 

• 개발자 μ½˜μ†” 

- λΈŒλΌμš°μ €μ—λŠ” '개발자 도ꡬ' κΈ°λŠ₯이 λ‚΄μž₯λ˜μ–΄ 있음. 이 도ꡬλ₯Ό ν™œμš©ν•˜μ—¬ μ—λŸ¬ 확인 κ°€λŠ₯

- λŒ€λΆ€λΆ„μ˜ κ°œλ°œμžλŠ” Chromeμ΄λ‚˜ Firefoxλ₯Ό μ΄μš©ν•΄ κ°œλ°œν•˜λŠ” 것을 μ„ ν˜Έ

- 두 λΈŒλΌμš°μ €κ°€ μ œκ³΅ν•˜λŠ” 개발자 도ꡬ가 ν›Œλ₯­ν•˜κΈ° λ•Œλ¬Έ

- 개발자 도ꡬ λ³΄λŠ” 법 : F12 (mac의 경우 cmd + opt + J)

 

 

 - 빨간색 글씨

   μ—λŸ¬ λ©”μ‹œμ§€

 

 - μ—λŸ¬ λ©”μ‹œμ§€ 우츑 링크

    VM0000 → μ—λŸ¬κ°€ λ°œμƒν•œ 파일

   μˆ«μž → μ—λŸ¬κ°€ λ°œμƒν•œ 쀄

 

 - μ»€λ§¨λ“œ 라인 (> 기호)

   μžλ°”μŠ€ν¬λ¦½νŠΈ λͺ…λ Ήμ–΄(command)λ₯Ό μž…λ ₯

   μ»€λ§¨λ“œ 라인에 λͺ…λ Ήμ–΄ μž…λ ₯ ν›„ μ—”ν„° λˆ„λ₯΄λ©΄ ν•΄λ‹Ή λͺ…λ Ήμ–΄ μ‹€ν–‰
   λͺ…λ Ήμ–΄λ₯Ό μ—¬λŸ¬ 쀄에 걸쳐 μž‘μ„±ν•˜κ³  μ‹Άλ‹€λ©΄ shift + Enter

 

• 자주 λ°œμƒν•˜λŠ” μ—λŸ¬

Uncaught ReferenceError : _____ is not defined

(ν•œκ΅­μ–΄ λ²ˆμ—­) μΊ‘μ³λ˜μ§€ μ•Šμ€ 참고였λ₯˜ : _____κ°€ <읡λͺ…>:1:1에 μ •μ˜λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€

 

ν¬λ‘¬μ—μ„œ 값이 μ •μ˜λ˜μ§€ μ•Šμ€ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜ ν˜„μž¬ scope 밖에 μžˆλŠ” λ³€μˆ˜λ₯Ό μ‚¬μš©ν–ˆμ„ λ•Œ λ°œμƒ

 

console μ˜€νƒ€

 

Uncaught TypeError: _____ is not a function

(ν•œκ΅­μ–΄ λ²ˆμ—­) μΊ‘μ³λ˜μ§€ μ•Šμ€ νƒ€μž…μ—λŸ¬ : _____λŠ” <읡λͺ…>:1:9μ—μ„œ ν•¨μˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€

 

ν¬λ‘¬μ—μ„œ μ •μ˜λ˜μ§€ μ•Šμ€ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν–ˆμ„ λ•Œ λ°œμƒ → ν•¨μˆ˜ μ˜€νƒ€ 확인

ν•¨μˆ˜λ₯Ό 찾을 수 μ—†λŠ” 경우. ν•¨μˆ˜λͺ…이 νƒœκ·Έ ID, name λ“±κ³Ό λ™μΌν•˜κ±°λ‚˜ ν•¨μˆ˜ 내에 였λ₯˜κ°€ λ°œμƒν•˜λŠ” μ½”λ“œκ°€ μžˆμ„ 경우

 

. λ’·λΆ€λΆ„ log μ˜€νƒ€

 

Uncaught SyntaxError: missing _ after argument list

(ν•œκ΅­μ–΄ λ²ˆμ—­) μΊ‘μ³λ˜μ§€ μ•Šμ€ ꡬ문였λ₯˜ : 인수 λͺ©λ‘ 뒀에 _ λˆ„λ½

 

ν•¨μˆ˜ 호좜 방법에 였λ₯˜κ°€ μžˆμ„ λ•Œ λ°œμƒ. μ˜€νƒ€, μ—°μ‚°μž λˆ„λ½ λ˜λŠ” μ΄μŠ€μΌ€μ΄ν”„λ˜μ§€ μ•Šμ€ λ¬Έμžμ—΄μΌ 수 있음

κ΄„ν˜Έ 확인

 

) λˆ„λ½

 

μ•Œμ•„λ‘λ©΄ 쒋은 μ˜μ–΄

( ) : parentheses
{} braces
[] brackets

 

Uncaught SyntaxError: Invalid or unexpected token

(ν•œκ΅­μ–΄ λ²ˆμ—­) μΊ‘μ³λ˜μ§€ μ•Šμ€ ꡬ문였λ₯˜: 잘λͺ»λœ 토큰 λ˜λŠ” 예기치 μ•Šμ€ 토큰

 

μ—λŸ¬κ°€ λ°œμƒν•œ 라인에 μ˜€νƒ€κ°€ μ—†λŠ”μ§€ 확인. ν˜Ήμ€ μŒλ”°μ˜΄ν‘œλ‘œ λ¬Έμžμ—΄ 감싸주기, 콀마(,)μœ„μΉ˜, μ†Œκ΄„ν˜Έ, μ€‘κ΄„ν˜Έ λ“± κ΄„ν˜Έ μ—΄λ¦Ό, λ‹«νž˜ 잘λͺ»λœ 뢀뢄이 μ—†λŠ”μ§€ 확인

 

 

JavaScript μ—λŸ¬ TOP 10 (좜처 : https://blog.meeta.io/10) → 아직 λ‚΄κ°€ 이해할 수 X. ν•„μš”μ‹œ μ°Έκ³ 

1. Uncaught TypeError: Cannot read property 

    ν¬λ‘¬μ—μ„œ μ •μ˜λ˜μ§€ μ•Šμ€ 객체의 propertyλ₯Ό μ½μ–΄λ‚΄κ±°λ‚˜ methodλ₯Ό ν˜ΈμΆœν–ˆμ„ λ•Œ

2. TypeError: 'undefined' is not an object (evaluating

    1번과 같은 μ—λŸ¬μ΄μ§€λ§Œ safariμ—μ„œλŠ” μœ„μ™€ 같이 띄움

3. TypeError: null is not an object (evaluating 

    safariμ—μ„œ null의 propertyλ₯Ό μ½μ–΄λ‚΄κ±°λ‚˜ methodλ₯Ό ν˜ΈμΆœν–ˆμ„ λ•Œ λ°œμƒ

4. (unknown): Script error 

    μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ uncaught errorκ°€ cross-origin policyλ₯Ό μ–΄κΈ°λ©° λ‹€λ₯Έ λ„λ©”μΈμ—μ„œλΆ€ν„° λ„˜μ–΄μ˜€λŠ” 경우 λ°œμƒ

5. TypeError: Object doesn't support property

     IEμ—μ„œ μ •μ˜λ˜μ§€ μ•Šμ€ methodλ₯Ό ν˜ΈμΆœν–ˆμ„ λ•Œ λ°œμƒ

6. Uncaught TypeError : ____ is not a function

     ν¬λ‘¬μ—μ„œ μ •μ˜λ˜μ§€ μ•Šμ€ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν–ˆμ„ λ•Œ λ°œμƒ

7. Uncaught RangeError: Maximum call stack size exceeded

    μ’…λ£Œλ˜μ§€ μ•ŠλŠ” μž¬κ·€ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν–ˆμ„ λ•Œ ν˜Ήμ€ ν•¨μˆ˜μ— λ²”μœ„ μ΄μƒμ˜ 값이 μž…λ ₯ λ˜μ—ˆμ„ λ•Œ λ°œμƒ

8. Uncaught TypeError: Cannot read property length of undefined

    μ •μ˜λ˜μ§€ μ•Šμ€ λ³€μˆ˜μ˜ length property에 μ ‘κ·Όν•˜λŠ” 경우 λ°œμƒ

9. Uncaught TypeError: Cannot set property ____ of undefined

    값이 μ •μ˜λ˜μ§€ μ•Šμ€ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜κ³ μž ν•  λ•Œ 항상 'undefined'λΌλŠ” λ©”μ‹œμ§€λ₯Ό λ°›κ³ ,

    undefined λ³€μˆ˜μ˜ μ–΄λ–€ property도 값을 μ½κ±°λ‚˜ μ“Έ 수 μ—†μŒ

10. Uncaught ReferenceError: ___ is not defined

    값이 μ •μ˜λ˜μ§€ μ•Šμ€ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜ ν˜„μž¬ scope 밖에 μžˆλŠ” λ³€μˆ˜λ₯Ό μ‚¬μš©ν–ˆμ„ λ•Œ λ°œμƒ

 

2. μ½”λ“œ μž‘μ„± κ·œμΉ™

 

• ; (μ„Έλ―Έμ½œλ‘ )

λ§ˆμΉ¨ν‘œμ˜ μ—­ν• λ‘œ μ–΄λ””κΉŒμ§€κ°€ ν•˜λ‚˜μ˜ λͺ…령인지 κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ μ‚¬μš©

ν•˜λ‚˜μ˜ λͺ…령이 끝날 λ•Œ 뢙이기 

 

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ€„λ°”κΏˆμ΄ 있으면 이λ₯Ό 'μ•”μ‹œμ ' μ„Έλ―Έμ½œλ‘ μœΌλ‘œ 해석

μ΄λŸ¬ν•œ λ™μž‘ 방식을 μ„Έλ―Έμ½œλ‘  μžλ™ μ‚½μž…(automatic semicolon insertion)이라 ν•˜λŠ”λ° 항상 μž‘λ™ν•˜λŠ” 것은 μ•„λ‹˜

λ”°λΌμ„œ ; λ₯Ό μ•ˆλΆ™μ—¬λ„ μ—λŸ¬κ°€ λ‚˜μ§„ μ•Šμ§€λ§Œ, μ—λŸ¬κ°€ λ‚˜λŠ” κ²½μš°λ„ 있음

 

; λ―Έμž‘μ„±μœΌλ‘œ μΈν•œ 였λ₯˜ λ°œμƒ 예

 

[] μ•žμ—λŠ” μ„Έλ―Έμ½œλ‘ μ΄ μžˆλ‹€κ³  κ°€μ •ν•˜μ§€ μ•ŠμŒ. λ”°λΌμ„œ 였λ₯˜ λ°œμƒ

 

; 잘 μž‘μ„±ν–ˆμ„ λ•Œ
; λ―Έμž‘μ„±μœΌλ‘œ μΈν•œ 였λ₯˜ λ°œμƒ 예

 

β€» μ„Έλ―Έμ½œλ‘ μ€ μƒλž΅ν•  수 μžˆμœΌλ‚˜ μ‚¬μš©ν•˜λŠ” 것이 더 μ•ˆμ „ν•¨

 

• 주석(comment)

ν•œ 쀄 짜리 주석 : // 

μ—¬λŸ¬ 쀄 주석 /* */

 

단좕킀 : 블둝 지정 ν›„ Ctrl + /

 

μ»΄ν“¨ν„°λŠ” μ½”λ“œλ‘œ μΈμ‹ν•˜μ§€ λͺ»ν•¨

→ μ–΄λ– ν•œ μ˜λ„λ‘œ μ½”λ“œκ°€ μž‘μ„± λ˜μ—ˆλŠ”μ§€ μ„€λͺ…ν•  λ•Œ, κ΅¬ν˜„ν•œ μ½”λ“œκ°€ μ–΄λ–€ λ™μž‘μ„ ν•˜λŠ”μ§€ 기둝할 λ•Œ λ“±

    μ½”λ“œμ— λŒ€ν•΄ μ„€λͺ…ν•  λ•Œ μ‚¬μš© (ν˜‘μ—…, μˆ˜μ •μ‹œ μœ μš©ν•¨)

→ 쓰이지 μ•ŠλŠ” μ½”λ“œλ“€λ„ μ£Όμ„μœΌλ‘œ μ²˜λ¦¬ν•˜κΈ°λ„ 함

 

ν•œ 쀄 주석 μ‚¬μš© 예

 

μ—¬λŸ¬ 쀄 주석 μ‚¬μš© 예

 

• λ“€μ—¬μ“°κΈ°

μ•ˆν•΄λ„ λ˜μ§€λ§Œ μ—λŸ¬κ°€ λ‚˜λŠ” κ²½μš°κ°€ 있고, 보기에 μ’‹μŒ

 

3. μžλ£Œν˜•

κ°’(value) : ν”„λ‘œκ·Έλž¨μ΄ μ‘°μž‘ν•  수 μžˆλŠ” 데이터

μžλ£Œν˜•(data type) : κ°’μ˜ μ’…λ₯˜ (ex. λ¬Έμžμ—΄, 숫자, λΆˆκ°’)

 

• 숫자(Number)

μ •μˆ˜(Integer) : 0보닀 μž‘μ€ 음의 μ •μˆ˜, 0, 0보닀 큰 음의 μ •μˆ˜

μ†Œμˆ˜(floating point) : μ†Œμˆ˜μ μ„ κ°–λŠ” ν˜•νƒœ

기본적으둜 사칙연산이 κ°€λŠ₯ 

 

↓ 특수 숫자 κ°’(special numeric value)

NaN : not a number μ΄μ§€λ§Œ μˆ«μžν˜•μœΌλ‘œ λΆ„λ₯˜

           κ³„μ‚° 쀑에 μ—λŸ¬κ°€ λ°œμƒν–ˆλ‹€λŠ” 것을 λ‚˜νƒ€λ‚΄μ£ΌλŠ” κ°’μœΌλ‘œ λΆ€μ •ν™•ν•˜κ±°λ‚˜ μ •μ˜λ˜μ§€ μ•Šμ€ μˆ˜ν•™ 연산을 μ‚¬μš©ν•˜λ©΄ λ°œμƒ

Infinity : λ¬΄ν•œμ„ λ‚˜νƒ€λ‚΄λŠ” μˆ«μžν˜•

 

 

 

parseInt : λ¬Έμžμ—΄μ„ μ •μˆ˜ν˜•μœΌλ‘œ λ³€ν™˜
parseFloat : λ¬Έμžμ—΄μ„ μ†Œμˆ˜ν˜•μœΌλ‘œ λ³€ν™˜
Number : λ¬Έμžμ—΄μ„ μˆ«μžν˜•μœΌλ‘œ λ³€ν™˜
단, Number에 '3μ›”', '1일'κ³Ό 같은 λ¬Έμžμ—΄μ΄ λ“€μ–΄κ°ˆ κ²½μš°μ—λŠ” NaN으둜 좜λ ₯λ˜λ‚˜,
parseIntλ₯Ό μ‚¬μš©ν•  경우 3,1 κ³Ό 같이 숫자둜 좜λ ₯됨

 

• λ¬Έμžμ—΄(String)

μ‹œμž‘κ³Ό 끝이 μž‘μŒλ”°μ˜΄ν‘œ(' ')둜 감싸져 μžˆλŠ” 데이터

ν°λ”°μ˜΄ν‘œ(" "), λ°±ν‹±(` `) 도 μ‚¬μš©ν•  수 있음

 

μ–‘ 끝의 λ”°μ˜΄ν‘œ μ’…λ₯˜λ₯Ό λ§žμΆ°μ„œ μ‚¬μš©ν•΄μ•Ό 함 (' " μ‚¬μš©μ‹œ μ—λŸ¬ λ°œμƒ)

백틱은 μ€„λ°”κΏˆμ„ ν•  수 있음. κ·Έ μ™Έ μ€„λ°”κΏˆ ν•˜κ³  싢을 λ•Œ \n μ‚¬μš©

λ°±ν‹±μœΌλ‘œ λ³€μˆ˜λ‚˜ ν‘œν˜„μ‹μ„ 감싼 ν›„ ${...}μ•ˆμ— λ„£μ–΄μ£Όλ©΄, μ›ν•˜λŠ” λ³€μˆ˜λ‚˜ ν‘œν˜„μ‹μ„ λ¬Έμžμ—΄ 쀑간에 μ†μ‰½κ²Œ 넣을 수 있음

 

ν…œν”Œλ¦Ώ λ¬Έμžμ—΄ (templete strings)
``(λ°±ν‹±) μ•ˆμ— ${λ³€μˆ˜}와 ${ν•¨μˆ˜}λ₯Ό λ„£μ–΄ μ‰½κ²Œ λ¬Έμžμ—΄μ„ μž‘μ„±ν•  수 있음

 

ν…œν”Œλ¦Ώ λ¬Έμžμ—΄ μ‚¬μš© 예

 

ν°λ”°μ˜΄ν‘œλ‚˜ μž‘μŒλ”°μ˜΄ν‘œλŠ” 쀑간에 ν‘œν˜„μ‹μ„ 넣을 수 μ—†μŒ

'' μ•ˆμ— ' λ„£κ³  싢을 λ•Œ \ μ‚¬μš©ν•˜κ±°λ‚˜ λ°”κΉ₯에 "" μ‚¬μš©

+ 기호 톡해 λ¬Έμžμ—΄ 연결이 κ°€λŠ₯함

 

λ¬Έμžμ—΄ μž‘μ„± 예

 

• 뢈린(Boolean)

true μ°Έ

false 거짓

 

• undefined

값이 ν• λ‹Ήλ˜μ§€ μ•Šμ€ μƒνƒœ

λ°˜ν™˜ν•  결과값이 없을 λ•Œ λ‚˜μ˜΄

 

• null

μ˜λ„μ μœΌλ‘œ 빈 값을 넣을 λ•Œ μ‚¬μš©

'μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”(nothing)' κ°’, 'λΉ„μ–΄ μžˆλŠ”(empty)' κ°’, 'μ•Œ 수 μ—†λŠ”(unknown)' 값을 λ‚˜νƒ€λ‚Ό λ•Œ μ‚¬μš©

 

null 버그

null의 μžλ£Œν˜•μ€ null 

유λͺ…ν•œ 버그

 

4. μ—°μ‚°μž

 

μš©μ–΄μ •λ¦¬

ν”Όμ—°μ‚°μž(operand) : μ—°μ‚°μžκ°€ 연산을 μˆ˜ν–‰ν•˜λŠ” λŒ€μƒμœΌλ‘œ 인수(argument)라고 λΆ€λ₯΄κΈ°λ„ 함

단항(unary) : ν”Όμ—°μ‚°μžλ₯Ό ν•˜λ‚˜λ§Œ λ°›λŠ” μ—°μ‚°μž

이항(binary) : 두 개의 ν”Ό μ—°μ‚°μžλ₯Ό λ°›λŠ” μ—°μ‚°μž

 

• λ”ν•˜κΈ° [ + ]

두 수λ₯Ό ν•©μΉ˜κ±°λ‚˜, λ˜λŠ” 두 λ¬Έμžμ—΄μ„ ν•˜λ‚˜λ‘œ 뢙일 λ•Œ μ‚¬μš©

λ¬Έμžν˜• + 숫자 일 경우 : μˆ«μžκ°€ λ¬Έμžμ—΄λ‘œ λ°”λ€œ (ν˜•λ³€ν™˜ type casting)

'λ¬Έμžμ—΄' + 0 > 'λ¬Έμžμ—΄0'

+ μ‚¬μš© 예

 

반면, λ¬Έμžμ—΄ μ•žμ— + μ—°μ‚°μžλ₯Ό 뢙이면 μˆ«μžν˜•μœΌλ‘œ λ³€ν™˜

+λ¬Έμžμ—΄ μ‚¬μš© 예

 

• λΉΌκΈ° [ - ] / κ³±ν•˜κΈ° [ * ] / λ‚˜λˆ„κΈ° [ / ]

 

μ—°μ‚°μž μ‚¬μš© 예

 

μ»΄ν“¨ν„°λŠ” νŠΉμ΄ν•˜κ²Œ λΆ€λ™μ†Œμˆ˜μ  계산은 μ–΄λ €μ›Œν•¨

WHY? μ΄μ§„μˆ˜λ‘œ λ³€ν™˜ν•˜μ—¬ κ³„μ‚°ν•˜λŠ”λ° μ†Œμˆ˜μ μ€ μ΄μ§„μˆ˜ λ³€ν™˜μ΄ 어렀움

λ”°λΌμ„œ μ†Œμˆ˜μ  계산할 λ•Œμ—λŠ” 10을 κ³±ν•œ ν›„ 10으둜 λ‚˜λˆ„μ–΄μ„œ 계산

 

μ†Œμˆ˜μ  계산 예

 

- , *, / λŠ” μˆ«μžκ°€ μ•„λ‹Œ 것듀이 숫자둜 λ°”λ€œ

'λ¬Έμžμ—΄' - 0 > NaN (μˆ«μžν˜•)

Number('λ¬Έμžμ—΄') - 0 이 μ μš©λ˜μ—ˆλ‹€κ³  λ³Ό 수 있음

NaN은 μ–΄λ–€ κ°’κ³Ό 연산해도 NaN값이 λ‚˜μ˜΄

 

 

• λ‚˜λ¨Έμ§€ [ % ]

 

• κ±°λ“­μ œκ³± [ ** ]

 

• ν• λ‹Ή [ = ]

값을 μ–΄λ–€ λ³€μˆ˜μ— ν• λ‹Ή

 

볡합 ν• λ‹Ή μ—°μ‚°μž (compound assignment operators) : +=,   -=,   *=,   /=,   %=
증가(increment), κ°μ†Œ(decrement) μ—°μ‚°μž : λ³€μˆ˜μ˜ 값을 1μ”© μ¦κ°€μ‹œν‚€κ±°λ‚˜ κ°μ†Œμ‹œν‚¬λ•Œ x++, x--

 

• 동등 [ == ]  일치 [ === ]

두 값이 μ„œλ‘œ 같은지 ν…ŒμŠ€νŠΈν•˜μ—¬ true/false κ²°κ³Όλ₯Ό λ°˜ν™˜

 

== κ°’λ§Œ 비ꡐ (ν˜•λ³€ν™˜μ΄ 일어남)

=== κ°’, μžλ£Œν˜•κΉŒμ§€ 비ꡐ

 

• λΆ€μ • [ ! ] / 닀름 [ !==]

 

μ—°μ‚°μž μš°μ„ μˆœμœ„

κ·Έλ£Ήν™” (  )
    ↓
* ν˜Ήμ€ / 
    ↓
+ ν˜Ήμ€  -

이외에 더 λ§Žμ§€λ§Œ μ™ΈμšΈ ν•„μš”λŠ” μ—†μŒ

 

NaN == NaN; NaN >= Nan; NaN <= NaN;

< false

 

NaN != Nan;

< true

 

true > false;

< true

μ™œ? trueλŠ” 1, falseλŠ” 0

 

'b' > 'a';

< true

 

'ad' > 'ab';

< true

 

'3' < 5;  '3'이 숫자둜 λ³€ν™˜

< true

 

'abc' < 5; 'abc'λŠ” μˆ«μžν˜• NaN으둜 λ³€ν™˜. NaNκ°’κ³Όμ˜ λΉ„κ΅λŠ” false

false

 

==과&nbsp; ===의 차이
!= 과 !==의 차이
charCodeAt μ‚¬μš© 예

문자의 번호 μ•Œμ•„λ³Ό λ•Œ μ‚¬μš© ; .charCodeAt()

 

• typeof

인수의 μžλ£Œν˜•μ„ λ°˜ν™˜

 

string μ‚¬μš© 예

 

typeof μ—°μ‚°μžλŠ” 일반적으둜 사칙연산보닀 μš°μ„ μˆœμœ„κ°€ λ†’μŒ

λ”°λΌμ„œ ()λ₯Ό 톡해 연산을 λ¨Όμ € μˆ˜ν–‰ ν›„ typeofλ₯Ό μ‹€ν–‰ν•˜λ©΄ μ›ν•˜λŠ” κ²°κ³Όλ₯Ό 얻을 수 있음

 

• 논리 μ—°μ‚°μž

&& : and

|| : or

! : λ°˜λŒ€λ‘œ μ „ν™˜

!! : λ°˜λŒ€ 2번, Boolean으둜 ν˜•λ³€ν™˜

 

false, ''(λΉˆλ¬Έμžμ—΄), 0, NaN, null, undefined은 λΆˆκ°’μœΌλ‘œ ν˜• λ³€ν™˜ν–ˆμ„ λ•Œ false → μ™Έμš°κΈ°β˜…

μœ„μ˜ 값듀을 'falsyκ°’'이라고 λΆ€λ₯΄κΈ°λ„ 함

 

!, !! μ‚¬μš© 예

 

μ—°μ‚°μž μš°μ„ μˆœμœ„

μš°μ„ μˆœμœ„ μ—°μ‚°μž μœ ν˜• 기호
21 κ·Έλ£Ή ( )
...    
17 논리 NOT !
17 typeof typeof
16 κ±°λ“­μ œκ³± **
15 κ³±μ…ˆ *
15 λ‚˜λˆ—μ…ˆ /
15 λ‚˜λ¨Έμ§€ %
14 λ§μ…ˆ +
14 λΊ„μ…ˆ -
...    
12 미만 <
12 μ΄ν•˜ <=
12 초과 >
12 이상 >=
11 동등 ==
11 λΆ€λ“± !=
11 일치 ===
11 뢈일치 !==
...    
6 논리 AND &&
5 논리 OR ||
...    
3 ν• λ‹Ή =