1 ๋ถ„ ์†Œ์š”

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

๋‹จ์ถ•ํ‰๊ฐ€๋Š” ํ‘œํ˜„์‹์„ ํ‰๊ฐ€ํ•˜๋Š” ๋„์ค‘์— ํ‰๊ฐ€ ๊ฒฐ๊ณผ๊ฐ€ ํ™•์ •๋œ ๊ฒฝ์šฐ ๋‚˜๋จธ์ง€ ํ‰๊ฐ€ ๊ณผ์ •์„ ์ƒ๋žตํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ฆ‰, ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ํ”ผ์—ฐ์‚ฌ์ž๋ฅผ ํƒ€์ž… ๋ณ€ํ™”ํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜๋‹ค.

์˜ˆ๋ฅผ ๋ณด๋ฉด ์•Œ๊ธฐ ์‰ฝ๋‹ค.

  //๋…ผ๋ฆฌํ•ฉ(||) ์—ฐ์‚ฐ์ž
  'Cat' || 'Dog'  // => 'Cat'
  false || 'Dog' // => 'Dog'
  'Cat' || false // =>'Cat'

  //๋…ผ๋ฆฌ๊ณฑ(&&) ์—ฐ์‚ฐ์ž
  'Cat' && 'Dog'  // => 'Dog'
  false && 'Dog' // => false
  'Cat' && false // => false 

๋ฌธ์ž์—ด์€ true์ด๊ธฐ ๋•Œ๋ฌธ์— ์œ„์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. ์ขŒํ•ญ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ฝ๋‹ค๊ฐ€ ์ด ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ •๋ฆฌํ•ด๋ณด๋ฉด

๋‹จ์ถ•ํ‰๊ฐ€ํ‘œํ˜„์‹ ํ‰๊ฐ€๊ฒฐ๊ณผ
true || anything true
false || anything anything
true && anything anything
false && anything false





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

  var elem = null;
  var value = elem.value; // TypeError: Cannot read property 'value' of null

์›๋ž˜ ์—๋Ÿฌ๊ฐ€๋‚˜๋Š” ์ด ๊ฒฝ์šฐ๋ฅผ ๋‹จ์ถ• ํ‰๊ฐ€๋ฅผ ์ด์šฉํ•˜์—ฌ ์žก์„ ์ˆ˜ ์žˆ๋‹ค

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



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

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

var elem = null;
var value = elem?.value;
console.log(value); // undefined



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

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

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

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ