JavaScript

aepeeΒ·2021λ…„ 6μ›” 12일
0

> null

  • null값은 μ§€κΈˆκΉŒμ§€ μ†Œκ°œν•œ μžλ£Œν˜• 쀑 μ–΄λŠ μžλ£Œν˜•μ—λ„ μ†ν•˜μ§€ μ•ŠλŠ” κ°’
    null값은 μ˜€λ‘œμ§€ nullκ°’λ§Œ ν¬ν•¨ν•˜λŠ” λ³„λ„μ˜ μžλ£Œν˜•μ„ λ§Œλ“­λ‹ˆλ‹€.

  • μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” κ°’ (nothing)
  • λΉ„μ–΄μžˆλŠ” κ°’ (empty)
  • μ•Œ 수 μ—†λŠ” κ°’ (unknown)
   let age = null; 

   // λ‚˜μ΄(age)λ₯Ό μ•Œ 수 μ—†κ±°λ‚˜ κ·Έ 값이 λΉ„μ–΄μžˆμŒμ„ λ³΄μ—¬μ€λ‹ˆλ‹€.


> undefined

  • 값이 ν• λ‹Ήλ˜μ§€ μ•Šμ€ μƒνƒœ
  • λ³€μˆ˜λŠ” μ„ μ–Έν–ˆμ§€λ§Œ,
    값을 ν• λ‹Ήν•˜μ§€ μ•Šμ•˜λ‹€λ©΄ ν•΄λ‹Ή λ³€μˆ˜μ— undefinedκ°€ μžλ™μœΌλ‘œ ν• λ‹Ή
   let age;

   alert(age); // 'undefined'κ°€ 좜λ ₯λ©λ‹ˆλ‹€.
  • κ°œλ°œμžκ°€ λ³€μˆ˜μ— undefinedλ₯Ό λͺ…μ‹œμ μœΌλ‘œ ν• λ‹Ήν•˜λŠ” 것도 κ°€λŠ₯함
   let age = 100;

   // 값을 undefined둜 λ°”κΏ‰λ‹ˆλ‹€.
   age = undefined;

   alert(age); // "undefined"

β›” ν•˜μ§€λ§Œ μ΄λ ‡κ²Œ undefinedλ₯Ό 직접 ν• λ‹Ήν•˜λŠ” κ±Έ ꢌμž₯ν•˜μ§„ μ•ŠμŒ

  • λ³€μˆ˜κ°€ β€˜λΉ„μ–΄μžˆκ±°λ‚˜β€™ β€˜μ•Œ 수 μ—†λŠ”β€™ μƒνƒœλΌλŠ” κ±Έ λ‚˜νƒ€λ‚΄λ €λ©΄ null을 μ‚¬μš©ν•˜κ³ ,
    undefinedλŠ” 값이 ν• λ‹Ήλ˜μ§€ μ•Šμ€ λ³€μˆ˜μ˜ μ΄ˆκΈ°κ°’μ„ μœ„ν•΄ μ˜ˆμ•½μ–΄λ‘œ λ‚¨κ²¨λ‘‘μ‹œλ‹€.


- null & undefined

  • 일치 μ—°μ‚°μž ===λŠ” ν”Όμ—°μ‚°μžμ˜ ν˜•μ„ λ³€ν™˜ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν˜•μ΄ λ‹€λ₯΄λ©΄ 무쑰건 λ‹€λ₯΄λ‹€κ³  ν‰κ°€ν•©λ‹ˆλ‹€.

  • nullκ³Ό undefinedλŠ” νŠΉλ³„ν•œ κ°’μž…λ‹ˆλ‹€.
    두 값을 == μ—°μ‚°μžλ‘œ λΉ„κ΅ν•˜λ©΄ trueλ₯Ό λ°˜ν™˜ν•˜μ§€λ§Œ, λ‹€λ₯Έ κ°’κ³Ό λΉ„κ΅ν•˜λ©΄ 무쑰건 falseλ₯Ό λ°˜ν™˜



> μˆ«μžν˜•μœΌλ‘œ λ³€ν™˜

  • μˆ«μžν˜•μœΌλ‘œμ˜ λ³€ν™˜μ€ μˆ˜ν•™κ³Ό κ΄€λ ¨λœ ν•¨μˆ˜μ™€ ν‘œν˜„μ‹μ—μ„œ μžλ™μœΌλ‘œ 일어남
   alert( "6" / "2" ); // 3, λ¬Έμžμ—΄μ΄ μˆ«μžν˜•μœΌλ‘œ μžλ™λ³€ν™˜λœ ν›„ 연산이 μˆ˜ν–‰

  • Number(value) ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ 주어진 κ°’(value)을 μˆ«μžν˜•μœΌλ‘œ λͺ…μ‹œν•΄μ„œ λ³€ν™˜ν•  수 있음
   let str = "123";
   alert(typeof str); // string

   let num = Number(str); // λ¬Έμžμ—΄ "123"이 숫자 123으둜 λ³€ν™˜λ©λ‹ˆλ‹€.

   alert(typeof num); // number

πŸ’‘ μˆ«μžν˜• κ°’λ₯Ό μ‚¬μš©ν•΄ 무언가λ₯Ό ν•˜λ €κ³  ν•˜λŠ”λ° κ·Έ 값을 문자 기반 폼(form)을 톡해 μž…λ ₯λ°›λŠ” 경우,
이런 λͺ…μ‹œμ  ν˜• λ³€ν™˜μ΄ ν•„μˆ˜

   // 방법1) + μ‚¬μš©
   let value = +prompt("숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”.", '');

   // 방법2) Number() μ‚¬μš©
   let value = Number(prompt("숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”.", ''));

  • 숫자 μ΄μ™Έμ˜ κΈ€μžκ°€ λ“€μ–΄κ°€ μžˆλŠ” λ¬Έμžμ—΄μ„ μˆ«μžν˜•μœΌλ‘œ λ³€ν™˜ν•˜λ €κ³  ν•˜λ©΄, κ·Έ κ²°κ³ΌλŠ” NaN
   let age = Number("μž„μ˜μ˜ λ¬Έμžμ—΄ 123");

   alert(age); // NaN, ν˜• λ³€ν™˜μ΄ μ‹€νŒ¨ν•©λ‹ˆλ‹€.

   alert( Number("   123   ") ); // 123
   alert( Number("123z") );      // NaN ("z"λ₯Ό 숫자둜 λ³€ν™˜ν•˜λŠ” 데 μ‹€νŒ¨ν•¨)
   alert( Number(true) );        // 1
   alert( Number(false) );       // 0
nullκ³Ό undefined은 μˆ«μžν˜•μœΌλ‘œ λ³€ν™˜ μ‹œ κ²°κ³Όκ°€ λ‹€λ₯΄λ‹€λŠ” 점에 유의
  • null은 0이 되고 undefinedλŠ” NaN이 λœλ‹€ !!!


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

  • NOT (!) μ—°μ‚°μžμ˜ μš°μ„ μˆœμœ„λŠ” λͺ¨λ“  논리 μ—°μ‚°μž μ€‘μ—μ„œ κ°€μž₯ λ†’κΈ° λ•Œλ¬Έμ— 항상 &&λ‚˜ || 보닀 λ¨Όμ € μ‹€ν–‰

  • NOT을 두 개 연달아 μ‚¬μš©(!!)ν•˜λ©΄ 값을 λΆˆλ¦°ν˜•μœΌλ‘œ λ³€ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€

   alert( !!"non-empty string" ); // true
   alert( !!null ); // false

  • λ‚΄μž₯ ν•¨μˆ˜ Boolean을 μ‚¬μš©ν•˜λ©΄ !!을 μ‚¬μš©ν•œ 것과 같은 κ²°κ³Όλ₯Ό λ„μΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€
   alert( Boolean("non-empty string") ); // true
   alert( Boolean(null) ); // false

🎯 NOT μ—°μ‚°μž !λŠ” ν”Όμ—°μ‚°μžμ˜ μžλ£Œν˜•μ„ λΆˆλ¦°ν˜•μœΌλ‘œ λ°”κΎΌ ν›„ κ·Έ 역을 λ°˜ν™˜


> null 병합 μ—°μ‚°μž

  • null 병합 μ—°μ‚°μž ??λŠ” ν”Όμ—°μ‚°μž 쀑 μ‹€μ œ 값이 μ •μ˜λœ ν”Όμ—°μ‚°μžλ₯Ό μ°ΎλŠ” 데 μ“°μž„
  • aκ°€ nullμ΄λ‚˜ undefinedκ°€ μ•„λ‹ˆλ©΄ a ?? b의 평가 κ²°κ³ΌλŠ” a
  • aκ°€ nullμ΄λ‚˜ undefined이면 a ?? b의 평가 κ²°κ³ΌλŠ” b

> ν•¨μˆ˜ 이름짓기

  • ν•¨μˆ˜κ°€ μ–΄λ–€ λ™μž‘μ„ ν•˜λŠ”μ§€ μΆ•μ•½ν•΄μ„œ μ„€λͺ…ν•΄μ£ΌλŠ” 동사λ₯Ό μ ‘λ‘μ–΄λ‘œ λΆ™μ—¬ ν•¨μˆ˜ 이름을 λ§Œλ“œλŠ” 게 κ΄€μŠ΅

ex)

  • show둜 μ‹œμž‘ν•˜λŠ” ν•¨μˆ˜λŠ” λŒ€κ°œ 무언가λ₯Ό λ³΄μ—¬μ£ΌλŠ” ν•¨μˆ˜
  • get 값을 λ°˜ν™˜ν•¨
  • calc 무언가λ₯Ό 계산함
  • create 무언가λ₯Ό 생성함
  • check 무언가λ₯Ό ν™•μΈν•˜κ³  λΆˆλ¦°κ°’μ„ λ°˜ν™˜ν•¨
   showMessage(..)     // λ©”μ‹œμ§€λ₯Ό λ³΄μ—¬μ€Œ
   getAge(..)          // λ‚˜μ΄λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 값을 μ–»κ³  κ·Έ 값을 λ°˜ν™˜ν•¨
   calcSum(..)         // 합계λ₯Ό κ³„μ‚°ν•˜κ³  κ·Έ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•¨
   createForm(..)      // form을 μƒμ„±ν•˜κ³  λ§Œλ“€μ–΄μ§„ form을 λ°˜ν™˜ν•¨
   checkPermission(..) // 승인 μ—¬λΆ€λ₯Ό ν™•μΈν•˜κ³  trueλ‚˜ falseλ₯Ό λ°˜ν™˜ν•¨


> return

  • ν•¨μˆ˜λŠ” 항상 무언가λ₯Ό λ°˜ν™˜ν•¨!!
    즉, {λŒ€κ΄„ν˜Έ}λ₯Ό μ‚¬μš©ν•œ ν•¨μˆ˜ μ•ˆμ—λŠ” return문이 κΌ­ μžˆμ–΄μ•Ό 함!

  • return만 μ‚¬μš©ν•˜λ©΄, κ·Έλƒ₯ ν•¨μˆ˜λ₯Ό λ‚˜κ°€κ²Œ 됨

  • return문이 μ—†λŠ” 경우 undefinedλ₯Ό 리턴함


좜처 | javascript.info

profile
πŸ“λ‚΄κ°€ 보렀고 κΈ°λ‘ν•˜λŠ” λΈ”λ‘œκ·Έ

0개의 λŒ“κΈ€