header-img
Info :
728x90

๊ณต๋ถ€ํ•˜๋‹ค๊ฐ€ ?. ๋ผ๋Š” ์ฒจ ๋ณด๋Š” ๋ฌธ๋ฒ•์ด ๋‚˜์™€์„œ ๊ฒ€์ƒ‰ํ•˜๋ ค๊ณ  ํ–ˆ๋”๋‹ˆ ?. ํ‚ค์›Œ๋“œ๋Š” ๊ฒ€์ƒ‰์ด ์•ˆ๋จ..

๊ทธ๋ž˜์„œ ๋” ์ฐพ์•„๋ณด๋‹ˆ ์ด๊ฑธ Optional Changing์ด๋ผ๊ณ  ํ•œ๋‹ค๋”๋ผ ~

 

์ฐธ๊ณ ๋กœ ์ด ๋ฌธ๋ฒ•์€ javascript.info ์— ๊ฒ€์ƒ‰ํ•˜๋ฉด ์ตœ๊ทผ์— ์ถ”๊ฐ€๋œ ๋ฌธ๋ฒ•์ด๋ผ๊ณ  ๋œฐ ์ •๋„์ž„

์ฒ˜์Œ ๋ณด๋Š”๊ฒŒ ใ…‡ใ…‡ ๋‹น์—ฐํ•จ

์˜ต์…”๋„ ์ฒด์ด๋‹(optional Chaining) ์ธ ?. ์„ ์‚ฌ์šฉํ•˜๋ฉด, ํ”„๋กœํผํ‹ฐ๊ฐ€ ์—†๋Š” ์ค‘์ฒฉ ๊ฐ์ฒด๋ฅผ ์—๋Ÿฌ ์—†์ด ์•ˆ์ „ํ•˜๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

 

๋ฐฐ๊ฒฝ)

์–ด๋–ค ํŽ˜์ด์ง€์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์š”์†Œ์— ์ ‘๊ทผํ•˜์—ฌ ์š”์†Œ์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

// querySelecter(...) ํ˜ธ์ถœ ๊ฒฐ๊ณผ๊ฐ€ null์ธ ๊ฒฝ์šฐ ์—๋Ÿฌ ๋ฐœ์ƒ
let html = document.querySelector('.my-element').innerHTML;

 

๊ทธ๋ž˜์„œ ์ด๋Ÿฐ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•˜์—ฌ && ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ณค ํ–ˆ๋Š”๋ฐ...

let user = {}; //์ฃผ์†Œ ์ •๋ณด๊ฐ€ ์—†๋Š” ์‚ฌ์šฉ์ž
alert( user && user.address && user.address.street); // undefined, ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ

์ค‘์ฒฉ ๊ฐ์ฒด์˜ ํŠน์ • ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ๊ฑฐ์ณ์•ผ ํ•  ๊ตฌ์„ฑ ์š”์†Œ๋“ค์„ AND(&&)๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ์‹ค์ œ ํ•ด๋‹น ๊ฐ์ฒด๋‚˜ ํ”„๋กœํผํ‹ฐ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค. ์ด๋ ‡๊ฒŒ AND ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ์•„์ฃผ ๊ธธ์–ด์ง„๋‹ค๋Š” ๋‹จ์ ์ด ์กด์žฌ..

 

๊ทธ๋ž˜์„œ ์˜ต์…”๋„ ์ฒด์ด๋‹(?.)์ด ๋“ฑ์žฅํ•˜๊ฒŒ ๋จ.

?.๋Š” ?. '์•ž'์˜ ํ‰๊ฐ€ ๋Œ€์ƒ์ด undefined ๋‚˜ null ์ด๋ฉด ํ‰๊ฐ€๋ฅผ ๋ฉˆ์ถ”๊ณ  undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์˜ต์…”๋„ ์ฒด์ด๋‹์„ ์‚ฌ์šฉํ•ด user.address.street์— ์ ‘๊ทผํ•ด๋ณด์ž.

let user = {};				// ์ฃผ์†Œ ์ •๋ณด๊ฐ€ ์—†๋Š” ์‚ฌ์šฉ์ž
alert(user?.address?.street);	// undefined, ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ.

user?.address์˜ ํ˜•ํƒœ๋กœ ์ฃผ์†Œ๋ฅผ ์ฝ์œผ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด user ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋”๋ผ๋„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ.

let user=null;

alert(user?.address);	//undefined
alert(user?.address.street);	//undefined

์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด ?.๋Š” ?. '์•ž'์˜ ํ‰๊ฐ€ ๋Œ€์ƒ์—๋งŒ ๋™์ž‘๋˜๊ณ , ํ™•์žฅ์—์„œ๋Š” ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค..

์ฐธ๊ณ ๋กœ, user?. ๋Š” user๊ฐ€ null์ด๋‚˜ undefined์ธ ๊ฒฝ์šฐ์—๋งŒ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

์ฐธ๊ณ  ๋ฌธํ—Œ

 

https://ko.javascript.info/optional-chaining

728x90
๋”๋ณด๊ธฐ
FRONTEND/React