all is well!!

11. ํƒ€์ž… ๋ณ€ํ™˜๊ณผ ๋‹จ์ถ• ํ‰๊ฐ€ ๋ณธ๋ฌธ

Javascript ๊ณต๋ถ€

11. ํƒ€์ž… ๋ณ€ํ™˜๊ณผ ๋‹จ์ถ• ํ‰๊ฐ€

tnqlscho 95 2023. 7. 14. 13:30

๐Ÿ‘€  ํƒ€์ž… ๋ณ€ํ™˜ ?

JS์—๋Š” ๋ชจ๋“  ๊ฐ’์€ ํƒ€์ž…์ด ์žˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  JS๋Š” ๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ,

1. ๊ฐœ๋ฐœ์ž์˜ ์˜๋„์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ช…์‹œ์  ํƒ€์ž… ๋ณ€ํ™˜

2. ํ‘œํ˜„์‹์„ ํ‰๊ฐ€ํ•˜๋Š” ๋„์ค‘ JS ์—”์ง„์— ์˜ํ•ด ์•”๋ฌต์ ์œผ๋กœ ํƒ€์ž…์ด ์ž๋™๋ณ€ํ™˜ํ•˜๋Š” ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜์ด ์žˆ๋‹ค.

 

ํ—ท๊ฐˆ๋ฆฌ๋ฉด ์•ˆ๋˜๋Š” ์ !

์ด๋Ÿฐ ํƒ€์ž…๋ณ€ํ™˜์ด ๊ธฐ์กด ์›์‹œ๊ฐ’์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

ํƒ€์ž… ๋ณ€ํ™˜์€ ๊ธฐ์กด ์›์‹œ๊ฐ’์„ ์ด์šฉํ•ด ๋‹ค๋ฅธ ํƒ€์ž…์˜ ์ƒˆ๋กœ์šด ์›์‹œ ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š”๊ฒƒ.

var x = 10;

var str = x + '';
console.log(typeof str, str); // string 10

console.log(typeof x, x); // number 10

์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜์€ JS์—”์ง„์— ์˜ํ•ด ํ‘œํ˜„์‹์„ ์—๋Ÿฌ์—†์ด ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด

ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์„ ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜์„ ํ•ด ๋‹จ ํ•œ๋ฒˆ ์‚ฌ์šฉํ•˜๊ณ  ๋ฒ„๋ฆฐ๋‹ค.

 

ํƒ€์ž…๋ณ€ํ™˜์€

1. ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜์ด ๋˜๋Š”์ง€

2. ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์–ด๋–ค ํƒ€์ž… ์–ด๋–ค ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜๋˜๋Š”์ง€

3. ํƒ€์ž…๋ณ€ํ™˜๋œ ๊ฐ’์œผ๋กœ ํ‘œํ˜„์‹์ด ์–ด๋–ป๊ฒŒ ํ‰๊ฐ€๋˜๋Š”์ง€

์ž‘์„ฑํ•œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•ด์•ผํ•œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋•Œ๋กœ๋Š” ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜์ด ๊ฐ€๋…์„ฑ ์ธก๋ฉด์—์„œ ๋” ์ข‹์„ ์ˆ˜ ์žˆ๋‹ค.

1. (10).toString();

2. 10 + '';

2๋ฒˆ์ด ์ข€๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ํƒ€์ž…์ด ๋ณ€ํ™˜ํ•˜๊ฒ ๊ตฌ๋‚˜ ์ถ”์ธกํ•˜๊ธฐ๊ฐ€ ์‰ฝ๋‹ค.

 

๐Ÿ‘€  ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜

ํ‘œํ˜„์‹์„ ํ‰๊ฐ€ํ•˜๋Š” ๋„์ค‘ JS ์—”์ง„์— ์˜ํ•ด ์•”๋ฌต์ ์œผ๋กœ ํƒ€์ž…์ด ์ž๋™๋ณ€ํ™˜ ํ•˜๋Š”๊ฒƒ.

 

์•”๋ฌต์  ํƒ€์ž…๋ณ€ํ™˜์€ ์›์‹œ ํƒ€์ž… ์ค‘ ํ•˜๋‚˜๋กœ ์ž๋™๋ณ€ํ™˜ํ•œ๋‹ค.

1. ๋ฌธ์ž์—ด

2. ์ˆซ์ž

3. ๋ถˆ๋ฆฌ์–ธ

.

.

 

๐ŸŸฃ ๋ฌธ์ž์—ด ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜

1 + '2' // "12"

๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž (+) ์˜ ์—ญํ• ์€ '๋ฌธ์ž์—ด ๊ฐ’'์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ž˜์„œ ์ฝ”๋“œ์˜ ๋ฌธ๋งฅ์ƒ ๋ชจ๋‘ ๋ฌธ์ž์—ด ํƒ€์ž…์ด์—ฌ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—

JS์—”์ง„์€ ์—๋Ÿฌ๋ฅผ ์ผ์œผํ‚ค์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์ˆซ์žํƒ€์ž…์˜ 1์„ ๋ฌธ์žํƒ€์ž…์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.

 

ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด ํ‘œํ˜„์‹ ์‚ฝ์ž…์€ ํ‘œํ˜„์‹์˜ ํ‰๊ณผ ๊ฒฐ๊ณผ๋ฅผ ๋ฌธ์ž์—ด ํƒ€์ž…์œผ๋กœ

์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜ํ•œ๋‹ค.

`1 + 1 = ${1 + 1}` // "1 + 1 = 2"

 

* ๋‹ค์–‘ํ•œ ๋ฌธ์ž์—ด ์•„๋‹Œ ํƒ€์ž…์„ ๋ฌธ์ž์—ด ํƒ€์ž…์œผ๋กœ ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์˜ˆ์‹œ๋“ค

 

 

๐ŸŸฃ ์ˆซ์ž ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜

1 - '1' // 0
2 * '10' // 10
1 / 'one' // NaN

์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž์˜ ์—ญํ• ์€ ์ˆซ์ž ๊ฐ’์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž์˜ ๋ชจ๋“  ํ”ผ์—ฐ์‚ฐ์ž๋Š” ์ฝ”๋“œ ๋ฌธ๋งฅ์ƒ ๋ชจ๋‘ ์ˆซ์ž ํƒ€์ž…์ด์–ด์•ผ ํ•œ๋‹ค.

์œ„์˜ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์ˆซ์ž ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†์„๋•Œ์˜ ๊ฒฐ๊ณผ๋Š” NaN์ด ๋œ๋‹ค.

 

๋น„๊ต ์—ฐ์‚ฐ์ž์—๋„ ์ˆซ์žํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ• ๋•Œ๊ฐ€ ์žˆ๋‹ค.

'1' > 0 // true

๋น„๊ต ์—ฐ์‚ฐ์ž์˜ ์—ญํ• ์€ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

> ๋น„๊ต ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž์˜ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•ด์•ผ ํ•ด์„œ

๋ชจ๋“  ํ”ผ์—ฐ์‚ฐ์ž๋“ค์€ ์ฝ”๋“œ ๋ฌธ๋งฅ์ƒ ๋ชจ๋‘ ์ˆซ์ž ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

 

๋นˆ ๋ฌธ์ž์—ด, ๋นˆ ๋ฐฐ์—ด, null, false๋Š” 0์œผ๋กœ true๋Š” 1๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

๊ฐ์ฒด์™€ ๋นˆ ๋ฐฐ์—ด์ด ์•„๋‹Œ ๋ฐฐ์—ด ๊ทธ๋ฆฌ๊ณ  undefined๋Š” ๋ณ€ํ™˜๋˜์ง€ ์•Š์•„ NaN์ด ๋˜๊ธฐ๋•Œ๋ฌธ์— ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค.

 

* ๋‹ค์–‘ํ•œ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ํƒ€์ž…์„ ์ˆซ์ž ํƒ€์ž…์œผ๋กœ ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์˜ˆ์‹œ๋“ค

 

๐ŸŸฃ ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜

if('') console.log(x);

์ œ์–ด๋ฌธ ๋˜๋Š” ์‚ผํ•ญ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž์˜ ์กฐ๊ฑด์‹์€ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋˜์–ด์•ผ ํ•œ๋‹ค.

JS์—”์ง„์€ ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…์ด ์•„๋‹Œ ๊ฐ’์„ Truthy(์ฐธ์œผ๋กœ ํ‰๊ฐ€๋˜๋Š” ๊ฐ’) ๋˜๋Š” Falsy(๊ฑฐ์ง“์œผ๋กœ ํ‰๊ฐ€๋˜๋Š” ๊ฐ’)์œผ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

 

* Falsy๋กœ  ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฐ’๋“ค

1. false
2. undefined
3. null
4. 0, -0
5. NaN
6. '' (๋นˆ ๋ฌธ์ž์—ด)

 

์œ„์˜ Falsy๊ฐ’ ์ด์™ธ์˜ ๋ชจ๋“  ๊ฐ’์€ ๋ชจ๋‘ true๋กœ ํ‰๊ฐ€๋˜๋Š” Truthy๊ฐ’์ด ๋œ๋‹ค.

 

๐Ÿ‘€  ๋ช…์‹œ์  ํƒ€์ž… ๋ณ€ํ™˜

๐ŸŸฃ ๋ช…์‹œ์ ์œผ๋กœ ํƒ€์ž… ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•

1. ํ‘œ์ค€ ๋นŒํŠธ์ธ ์ƒ์„ฑ์ž ํ•จ์ˆ˜(String, Number, Boolean)๋ฅผ new ์—ฐ์‚ฐ์ž ์—†์ด ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•

2. ๋นŒํŠธ์ธ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

3. ์•”๋ฌต์  ํƒ€์ž…๋ณ€ํ™˜์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

 

๐ŸŸฃ ๋ฌธ์ž์—ด ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•

1. String ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ new ์—ฐ์‚ฐ์ž ์—†์ด ํ˜ธ์ถœ

2. object.prototype.toString ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉ

 

3. ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉ

 

๐ŸŸฃ ์ˆซ์ž ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•

1. Number ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ new ์—ฐ์‚ฐ์ž ์—†์ด ํ˜ธ์ถœ

 

2. parseInt, parseFloat ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•(๋ฌธ์ž์—ด๋งŒ ์ˆซ์ž ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ ๊ฐ€๋Šฅ)

 

3. + ๋‹จํ•ญ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž ์ด์šฉ

 

4. * ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž ์ด์šฉ

 

๐ŸŸฃ ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•

1. Boolean ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ new ์—ฐ์‚ฐ์ž ์—†์ด ํ˜ธ์ถœ

 

2. ! ๋ถ€์ • ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋ฅผ ๋‘ ๋ฒˆ ์‚ฌ์šฉ

 

๐Ÿ‘€  ๋‹จ์ถ• ํ‰๊ฐ€

ํ‘œํ˜„์‹์„ ํ‰๊ฐ€ํ•˜๋Š” ๋„์ค‘ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๊ฐ€ ํ™•์ •๋œ ๊ฒฝ์šฐ ๋‚˜๋จธ์ง€ ํ‰๊ฐ€ ๊ณผ์ •์„ ์ƒ๋žต ํ•˜๋Š” ๊ฒƒ.

๋‹จ์ถ•ํ‰๊ฐ€๋Š” ํƒ€์ž… ๋ณ€ํ™˜ํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

๐ŸŸฃ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ ๋‹จ์ถ• ํ‰๊ฐ€

๋ณดํ†ต ๋…ผ๋ฆฌํ•ฉ(or - ||) ๋˜๋Š” ๋…ผ๋ฆฌ๊ณฑ(and - &&) ์—ฐ์‚ฐ์ž์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๋Š” ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์ด์—ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ๋‹จ์ถ• ํ‰๊ฐ€๋•Œ์—๋Š” ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์ด ์•„๋‹Œ ํ”ผ์—ฐ์‚ฐ์ž์˜ ์–ด๋А ํ•œ์ชฝ์œผ๋กœ ํ‰๊ฐ€๋œ๋‹ค.

 

1. ๋…ผ๋ฆฌ๊ณฑ(and - &&) ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž ์ „๋ถ€  true๋กœ ํ‰๊ฐ€๋˜์–ด์•ผ true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

'cat' && 'dog' // 'dog'
// ์™ผ์ชฝ --> ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ‰๊ฐ€

cat์€ ๋ฌธ์ž์—ด์ด๊ธฐ ๋•Œ๋ฌธ์— Truthyํ•œ ๊ฐ’์œผ๋กœ true๋กœ ํ‰๊ฐ€๋œ๋‹ค.

์—ฌ๊ธฐ์„œ ๋ฉˆ์ถ”์ง€ ์•Š๊ณ  ๋‘๊ฐ€์ง€๋‹ค true์ธ์ง€ ํ™•์ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ์ด๋™ํ•ด ๋˜ ํ‰๊ฐ€๋ฅผ ํ•œ๋‹ค.

dog๋„ ๋ฌธ์ž์—ด์ด๊ธฐ ๋•Œ๋ฌธ์— Truthyํ•œ ๊ฐ’์œผ๋กœ true๋กœ ํ‰๊ฐ€๋œ๋‹ค.

์ด๋ ‡๊ฒŒ ๋‘๊ฐ€์ง€๊ฐ€ Truthyํ•œ ๊ฐ’์œผ๋กœ true๋กœ ํ‰๊ฐ€๋˜๊ธฐ ๋•Œ๋ฌธ์—

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž์ธ dog๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

2. ๋…ผ๋ฆฌํ•ฉ(or - ||) ์—ฐ์‚ฐ์ž๋Š” ๋‘ ๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž์ค‘ ํ•œ๊ฐœ๋งŒ true๋กœ ํ‰๊ฐ€๋˜์–ด๋„ true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

'cat' || 'dog' // 'cat'
// ์™ผ์ชฝ --> ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ‰๊ฐ€

cat์€ ๋ฌธ์ž์—ด์ด๊ธฐ ๋•Œ๋ฌธ์— Truthyํ•œ ๊ฐ’์œผ๋กœ true๋กœ ํ‰๊ฐ€๋œ๋‹ค.

๋…ผ๋ฆฌํ•ฉ ์—ฐ์‚ฐ์ž๋Š” ๋‘˜์ค‘ ํ•˜๋‚˜๋งŒ true๋กœ ํ‰๊ฐ€๋˜์–ด๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์™ผ์ชฝ์ด true๋กœ ํ‰๊ฐ€๋˜๋ฉด

์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ์ด๋™ํ•˜์ง€์•Š๊ณ  ๋ฐ”๋กœ cat ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

* * ๋‹จ์ถ• ํ‰๊ฐ€์˜ ๊ทœ์น™ **

 

๋…ผ๋ฆฌ๊ณฑ(and - &&)์œผ๋กœ if๋ฌธ ๋Œ€์ฒดํ•˜๊ธฐ

var done = true;
ver message = '';

// ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์ „๋ถ€ true์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅธ์ชฝ '์™„๋ฃŒ'๋ฅผ ๋ฐ˜ํ™˜
message = done && '์™„๋ฃŒ';
console.log(message); // ์™„๋ฃŒ

 

๋…ผ๋ฆฌํ•ฉ(or - ||)์œผ๋กœ if๋ฌธ์„ ๋Œ€์ฒดํ•˜๊ธฐ

var done = false;
ver message = '';

// ํ”ผ์—ฐ์‚ฐ์ž ์˜ค๋ฅธ์ชฝ๋งŒ true์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅธ์ชฝ '๋ฏธ์™„๋ฃŒ'๋ฅผ ๋ฐ˜ํ™˜
message = done || '๋ฏธ์™„๋ฃŒ';
console.log(message); // ๋ฏธ์™„๋ฃŒ

 

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

๊ฐ์ฒด๋Š” ํ‚ค์™€ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ”„๋กœํผํ‹ฐ(์†์„ฑ)์˜ ์ง‘ํ•ฉ.

๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์ด null๋˜๋Š” undefined์ผ ๊ฒฝ์šฐ ํƒ€์ž…์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

var elem = null;
var value = elem.value; // ํƒ€์ž… ์—๋Ÿฌ!

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

var elem = null;
var value = elem && elem.value; // null

elem์ด Falsy ๊ฐ’์ด๋ฉด elem์œผ๋กœ ํ‰๊ฐ€๋˜๊ณ 

๋ฐ˜๋Œ€๋กœ Truthy ๊ฐ’์ด๋ฉด elem.value๋กœ ํ‰๊ฐ€๋œ๋‹ค.

 

ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •ํ•  ๋•Œ

ํ•จ์ˆ˜ ํ˜ธ์ถœํ•  ๋•Œ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜์ง€ ์•Š์œผ๋ฉด ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” undefined๊ฐ€ ํ• ๋‹น๋œ๋‹ค.

๋‹จ์ถ• ํ‰๊ฐ€๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•˜๋ฉด undefined๋กœ ์ธํ•ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•œ๋‹ค.

 

๐ŸŸฃ ์˜ต์…”๋„ ์ฒด์ด๋‹ ์—ฐ์‚ฐ์ž - ?.

ES11 ๋ฌธ๋ฒ• ์˜ต์…”๋„ ์ฒด์ด๋‹ ์—ฐ์‚ฐ์ž ?.๋Š”

์ขŒํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ null ๋˜๋Š” undefined์ผ๋• undefined๋ฅผ ๋ฐ˜ํ™˜

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์šฐํ•ญ์˜ ํ”„๋กœํผํ‹ฐ ์ฐธ์กฐ๋ฅผ ์ด์–ด๊ฐ„๋‹ค.

(์ฐธ๊ณ  - ์˜ต์…”๋„ ์ฒด์ด๋‹ ์—ฐ์‚ฐ์ž๊ฐ€ ๋„์ž…๋˜๊ธฐ ์ด์ „์—๋Š” ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž &&๋ฅผ ์‚ฌ์šฉํ•œ ๋‹จ์ถ•ํ‰๊ฐ€๋ฅผ ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค.)

var elem = null;

// ๊ฐ’์ด ์—†๋Š” elem ๋ณ€์ˆ˜์˜ value๋ฅผ ์ฐธ์กฐํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค.
// ์ขŒํ•ญ์ธ elem์ด null์ด๊ธฐ ๋•Œ๋ฌธ์— undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
var value = elem?.value;
console.log(value); // undefined

 

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

 

์ขŒํ•ญ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ false๋กœ ํ‰๊ฐ€๋˜๋Š” Falsy๊ฐ’์ด๋ผ๋„

null ๋˜๋Š” undefined๊ฐ€ ์•„๋‹ˆ๋ฉด ์šฐํ•ญ์˜ ํ”„๋กœํผํ‹ฐ ์ฐธ์กฐ๋ฅผ ์ด์–ด๊ฐ„๋‹ค.

var elem = '';

// ๋นˆ ๋ฌธ์ž์—ด์€ Falsy๋”๋ผ๋„ ์šฐํ•ญ์˜ ํ”„๋กœํผํ‹ฐ ์ฐธ์กฐ๋ฅผ ์ด์–ด๊ฐ„๋‹ค.
// ๋นˆ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 0์ด๊ธฐ ๋•Œ๋ฌธ์— 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
var length = elem?.length;
console.log(length); // 0

 

๐ŸŸฃ null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž - ??

 ES11 ๋ฌธ๋ฒ•์ธ null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž ??๋Š” ๋ณ€์ˆ˜์— ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ• ๋•Œ ์œ ์šฉํ•˜๋‹ค.

 

์ขŒํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ null ๋˜๋Š” undefined์ธ ๊ฒฝ์šฐ ์šฐํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋ฐ˜ํ™˜,

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ขŒํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

(์ฐธ๊ณ  - null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž๊ฐ€ ๋„์ž…๋˜๊ธฐ ์ด์ „์—๋Š” ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž ||๋ฅผ ์‚ฌ์šฉํ•œ ๋‹จ์ถ•ํ‰๊ฐ€๋ฅผ ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค.)

var foo = null ?? 'default string';
console.log(foo) // 'default string'

 

์ขŒํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ false๋กœ ํ‰๊ฐ€๋˜๋Š” Falsy๊ฐ’์ด๋ผ๋„

null ๋˜๋Š” undefine๊ฐ€ ์•„๋‹ˆ๋ฉด ์ขŒํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•ด์„œ

Falsyํ•œ ๊ฐ’์ธ 0์ด๋‚˜ ''๋„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์œ ํšจํ•˜๊ฒŒ ์„ค์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

??์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค. (๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž ||์˜ ๋‹จ์ถ•ํ‰๊ฐ€๋กœ๋Š” ๋ถ€์กฑํ•จ)

var foo = '' ?? 'default string';
console.log(foo) // ''

 

 

 

 

 

 

 

 

Comments