Notice
Recent Posts
Recent Comments
Link
ยซ   2024/09   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

Lennon FE

[JS] ๋‹จ์ถ• ํ‰๊ฐ€ - ์˜ต์…”๋„ ์ฒด์ด๋‹ ๋ฐ null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž ๋ณธ๋ฌธ

๐Ÿง‘‍๐Ÿ’ป Web/JavaScript

[JS] ๋‹จ์ถ• ํ‰๊ฐ€ - ์˜ต์…”๋„ ์ฒด์ด๋‹ ๋ฐ null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž

Lennon 2021. 11. 25. 00:10
728x90
๋ฐ˜์‘ํ˜•

๋‹จ์ถ• ํ‰๊ฐ€๋ž€

const obj = {
    name: "Park" // key = name, value = "Park"
}

๊ฐ์ฒด๋Š” ์ฝ”๋“œ์™€ ๊ฐ™์ด ํ‚ค์™€ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ๋งŒ์•ฝ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ null์ด๋‚˜ undefined์ด๋ฉด

ํƒ€์ž… ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋•Œ ๋‹จ์ถ•ํ‰๊ฐ€๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

let obj = null;
let result = obj.value; // TypeError

let obj2 = null
let result2 = obj2 && obj2.value; // null

 

๋‹จ์ถ• ํ‰๊ฐ€๋Š” ์ฝ”๋“œ์™€ ๊ฐ™์ด ๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

true && 1 // -> 1์ด ๋ฐ˜ํ™˜๋œ๋‹ค.

true || 1 // -> true๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค.

&& ์—ฐ์‚ฐ์ž๋Š” ์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ true์ด๊ณ  ๋‘ ๋ฒˆ์งธ ์—ฐ์‚ฐ์ž๊นŒ์ง€ true์—ฌ์•ผ true์ด๋ฏ€๋กœ ๋’ท ๋ถ€๋ถ„์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋ฐ˜๋ฉด || ์—ฐ์‚ฐ์ž๋Š” ์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ true์ด๋ฉด ๋‘ ๋ฒˆ์งธ ํ”ผ ์—ฐ์‚ฐ์ž๋Š” ๋ณด์ง€ ์•Š์•„๋„ true๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜ ์ขŒํ•ญ ํ”ผ์—ฐ์‚ฐ์ž 0๊ณผ ''๋“ฑ false๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๊ฐ’๋“ค์— ๋Œ€ํ•ด ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋™์ž‘์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋‚˜์˜จ ๊ฒŒ ์˜ต์…”๋„ ์ฒด์ด๋‹ ์—ฐ์‚ฐ์ž, null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž์ด๋‹ค.

 

์˜ต์…”๋„ ์ฒด์ด๋‹ ์—ฐ์‚ฐ์ž(?.)

let obj = null;
let result = obj?.value; // undefined

 

ํ•ด๋‹น ์ฝ”๋“œ์™€ ๊ฐ™์ด ์—ฐ์‚ฐ์ž ?. ๋Š” ์ขŒํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ null, undefined์ธ ๊ฒฝ์šฐ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์šฐํ•ญ์˜ ํ”„๋กœํผํ‹ฐ ์ฐธ์กฐ๋ฅผ ์ด์–ด๊ฐ„๋‹ค.

๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฅดํ‚ค๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๋Š” ๋ณ€์ˆ˜๊ฐ€ null, undefined๊ฐ€ ์•„๋‹Œ์ง€ ํ™•์ธํ•˜๊ณ  ํ”„๋กœํผํ‹ฐ๋ฅผ ์ฐธ์กฐํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.

๋˜ํ•œ ์ขŒํ•ญ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ 0๋˜๋Š” ''์ธ ๊ฒฝ์šฐ์—๋„ ์œ ์šฉํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋‹ค.(์‹ค์ œ ๊ฐ’์ธ๋ฐ ์ฐธ์กฐํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ)

 

 

null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž (??)

let str = null ?? "Park"; // "Park"

null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž๋Š” ๋ณ€์ˆ˜์— ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค. ๋˜ํ•œ, ํ•ญ์ƒ false๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๊ฐ’์— ๋Œ€ํ•ด์„œ๋„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ex)

const result = '' || 'Park';  // "Park"

const result2 = '' ?? 'Park';  // ''

 

์˜ต์…”๋„ ์ฒด์ด๋‹ ์—ฐ์‚ฐ์ž์™€ null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ํ•ญ์ƒ false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’๋“ค์— ๋Œ€ํ•ด(๋นˆ ๋ฌธ์ž์—ด, 0 ๋“ฑ) ๊ฐœ๋ฐœ์ž์˜ ์ƒ๊ฐ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋™์ž‘์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•
Comments