[JavaScript] nullish ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž ??

2022. 1. 24. 15:46ยท๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ปSTUDY/JavaScript

nullish ๋ณ‘ํ•ฉ์—ฐ์‚ฐ์ž ??

์ตœ๊ทผ์— ์ถ”๊ฐ€๋จ.
์ŠคํŽ™์— ์ถ”๊ฐ€๋œ์ง€ ์–ผ๋งˆ์•ˆ๋œ ๋ฌธ๋ฒ•. ๊ตฌ์‹ ๋ธŒ๋ผ์šฐ์ €๋Š” ํด๋ฆฌํ•„์ด ํ•„์š”ํ•˜๋‹ค.

nullsh ๋ณ‘ํ•ฉ์—ฐ์‚ฐ์ž(nullish coalescing operator) ??๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์งง์€ ๋ฌธ๋ฒ•์œผ๋กœ ์—ฌ๋Ÿฌ ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ๊ทธ ๊ฐ’์ด ํ™•์ •๋˜์–ด ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

a ?? b ์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • a๊ฐ€ null๋„ ์•„๋‹ˆ๊ณ  undefined๋„ ์•„๋‹ˆ๋ฉด a
  • ๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ b

nullish ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž ??์—†์ด x = a ?? b์™€ ๋™์ผํ•œ ๋™์ž‘์„ ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

x = (a !== null && a !== undefined) ? a : b;

??์™€ ||์˜ ์ฐจ์ด

  • ||๋Š” ์ฒซ ๋ฒˆ์งธ truthy๊ฐ’์„ ๋ฐ˜ํ™˜.
  • ??๋Š” ์ฒซ ๋ฒˆ์งธ ์ •์˜๋œ(defined) ๊ฐ’์„ ๋ฐ˜ํ™˜.
  • null๊ณผ undefined, ์ˆซ์ž 0์„ ๊ตฌ๋ถ„์ง€์–ด ๋‹ค๋ค„์•ผ ํ•  ๋•Œ ๋งค์šฐ ์ค‘์š”.
// height์— ๊ฐ’์ด ์ •์˜๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ height์—” 100์ด ํ• ๋‹น.
height = hegiht ?? 100;
let height = 0;
alert(height || 100);
alert(height ?? 100);

height || 100์€ height์— 0์„ falsy(0 = false)ํ•œ ๊ฐ’์œผ๋กœ ์ทจ๊ธ‰, null์ด๋‚˜ undefined๋ฅผ ํ• ๋‹นํ•œ ๊ฐ’์œผ๋กœ ์ทจ๊ธ‰. 100์˜ ๊ฒฐ๊ณผ๋ฅผ ๋‚ณ๋Š”๋‹ค. ๋ฐ˜๋ฉด, height ?? 100์˜ ํ‰๊ฐ€๊ฒฐ๊ณผ๋Š” height๊ฐ€ ์ •ํ™•ํ•˜๊ฒŒ null์ด๋‚˜ undefined์ผ ๊ฒฝ์šฐ์—๋งŒ 100์ด ๋œ๋‹ค. 0์˜ ๊ฒฐ๊ณผ๊ฐ’์ด ๋‚˜์˜จ๋‹ค.

??๋Š” ๋ณ€์ˆ˜์— ๊ธฐ๋ณธ๊ฐ’ใ…‡๋ฅด ํ• ๋‹นํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

// height๊ฐ€ null์ด๋‚˜ undefined์ธ ๊ฒฝ์šฐ, 100์„ ํ• ๋‹น.
height = height ?? 100;

์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„

  • ??์˜ ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„๋Š” ๋Œ€๋‹ค์ˆ˜์˜ ์—ฐ์‚ฐ์ž๋ณด๋‹ค ๋‚ฎ๊ณ  ?์™€ =๋ณด๋‹ค๋Š” ๋†’๋‹ค.
  • ๊ด„ํ˜ธ์—†์ด ??๋ฅผ ||๋‚˜ &&์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ธˆ์ง€๋˜์–ด ์žˆ๋‹ค.

 

Reference

nullish ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž '??'

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋™์ผ์กฐ๊ฑด (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ปSTUDY/JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [JavaScript] ์ฐธ์กฐ์— ์˜ํ•œ ๊ฐ์ฒด ๋ณต์‚ฌ
  • [JavaScript] ๊ฐ์ฒด
  • [JavaScript] return์ด ํ•˜๋Š” ์ผ
  • [JS] script async/defer
jmjm
jmjm
  • jmjm
    /* jmjmjm */
    jmjm
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (135)
      • ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ปSTUDY (96)
        • HTML (9)
        • CSS (25)
        • SASS (4)
        • JavaScript (17)
        • jQuery (9)
        • Publishing (8)
        • Git (11)
        • React (11)
        • Vue (0)
        • ์›น์ ‘๊ทผ์„ฑ (1)
        • Gulp (1)
      • ๐ŸฃcodeLab (28)
      • ๐ŸŒˆetc (8)
      • ๐Ÿฅฐ ์ผ์ƒ (2)
      • ๐ŸŒŸ์ฝ์–ด๋ณด๊ธฐ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    vscode ๋‹จ์ถ•ํ‚ค
    react import export
    javascript ์ปฌ๋ ‰์…˜
    ํ˜•์ œ์ธ์ ‘์ž display none
    html collection
    CSS ์„ ํƒ์ž
    css flex
    sass
    javascript nodelist
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹๋ฌธ
    javascript htmlcollection nodelist
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ปฌ๋ ‰์…˜
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹ ๋ฌธ
    ๋ง์ค„์ž„ ํˆดํŒ
    sass compiler
    ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น ์ข…๋ฅ˜
    javascript ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น
    javascript htmlcollection
    ํ˜•์ œ์ธ์ ‘์ž ์•ˆ๋˜๋Š” ์ด์œ 
    ํ˜•์ œ์ธ์ ‘์ž
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น
    ์›น์ ‘๊ทผ์„ฑ
    css ํ˜•์ œ์ธ์ ‘์ž ์•ˆ๋ผ์š”
    sticky jsfiddle
    ๋ง์ค„์ž„ tooltip
    ๋ง์ค„์ž„ ํ˜ธ๋ฒ„
    css ๊ฐ€์ƒ์„ ํƒ์ž
    ๋ง์ค„์ž„ hover
    HTML Form
    ์•„์ฝ”๋””์–ธ๋ฉ”๋‰ด
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
jmjm
[JavaScript] nullish ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž ??
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”