7์žฅ ์—ฐ์‚ฐ์ž(Operator)

  • ์—ฐ์‚ฐ์ž(Operator): ํ•˜๋‚˜ ์ด์ƒ์˜ ํ‘œํ˜„์‹์„ ๋Œ€์ƒ์œผ๋กœ ์‚ฐ์ˆ , ํ• ๋‹น, ๋น„๊ต, ๋…ผ๋ฆฌ ํƒ€์ž…, ์ง€์ˆ˜ ์—ฐ์‚ฐ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•ด ํ•˜๋‚˜์˜ ๊ฐ’์„ ๋งŒ๋“ ๋‹ค.
  • ํ”ผ์—ฐ์‚ฐ์ž(Operand): ์—ฐ์‚ฐ์˜ ๋Œ€์ƒ

์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž(Arithmetic Operator)

  • ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ˆ˜ํ•™์  ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•ด ์ƒˆ๋กœ์šด ์ˆซ์ž ๊ฐ’์„ ๋งŒ๋“ ๋‹ค. ์‚ฐ์ˆ ์ด ๋ถˆ๊ฐ€ํ•  ๊ฒฝ์šฐ NaN์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ดํ•ญ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž(Binary Arithmetic Operator)

  • ์ดํ•ญ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž๋Š” 2๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฐ์ˆ  ์—ฐ์‚ฐํ•˜์—ฌ ์ˆซ์ž ๊ฐ’์„ ๋งŒ๋“ ๋‹ค.

์ดํ•ญ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž

๋‹จํ•ญ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž(Unary Arithmetic Operator)

  • ๋‹จํ•ญ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž๋Š” 1๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฐ์ˆ  ์—ฐ์‚ฐํ•˜์—ฌ ์ˆซ์ž ๊ฐ’์„ ๋งŒ๋“ ๋‹ค.

๋‹จํ•ญ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž

var x = 1;

// ++์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ์•”๋ฌต์  ํ• ๋‹น์ด ์ด๋ฃจ์–ด์ง„๋‹ค.
x++; // x = x+1;
console.log(x); // 2

// --์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ์•”๋ฌต์  ํ• ๋‹น์ด ์ด๋ฃจ์–ด์ง„๋‹ค.
x--; // x = x-1;
console.log(x); // 1

์ฆ๊ฐ€/๊ฐ์†Œ ์—ฐ์‚ฐ์ž(++ , --) ์—ฐ์‚ฐ์ž๋Š” ์œ„์น˜์— ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค.

  • ํ”ผ์—ฐ์‚ฐ์ž ์•ž์— ์œ„์น˜ํ•œ ์ „์œ„ ์ฆ๊ฐ€/๊ฐ์†Œ ์—ฐ์‚ฐ์ž๋Š” ๋จผ์ € ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์„ ์ฆ๊ฐ€/๊ฐ์†Œ์‹œํ‚จ ํ›„, ๋‹ค๋ฅธ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ํ”ผ์—ฐ์‚ฐ์ž ๋’ค์— ์œ„์น˜ํ•œ ํ›„์œ„ ์ฆ๊ฐ€/๊ฐ์†Œ ์—ฐ์‚ฐ์ž๋Š” ๋จผ์ € ๋‹ค๋ฅธ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ ํ›„, ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์„ ์ฆ๊ฐ€/๊ฐ์†Œ์‹œํ‚จ๋‹ค.
var x = 5, result;

// ์„ ํ• ๋‹น ํ›„์ฆ๊ฐ€
result = x++;
console.log(result, x); // 5, 6

// ์„ ์ฆ๊ฐ€ ํ›„ํ• ๋‹น
result = ++x;
console.log(result, x); // 7, 7

// ์„ ํ• ๋‹น ํ›„๊ฐ์†Œ
result = x--;
console.log(result, x); // 7, 6

// ์„ ๊ฐ์†Œ ํ›„ํ• ๋‹น
result = --x;
console.log(result, x); // 5, 5

๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž

  • + ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์ด ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž๋กœ ๋™์ž‘ํ•œ๋‹ค.
// ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž
'1' + 2; // '12'
1 + '2'; // '12'

// ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž
1 + 2 ; // 3

// true๋Š” 1๋กœ ํƒ€์ž…์ด ๋ณ€ํ™˜๋œ๋‹ค.
1 + true; // 2

// false๋Š” 0์œผ๋กœ ํƒ€์ž… ๋ณ€ํ™˜๋œ๋‹ค.
// true, false๋Š” ๊ฐ๊ฐ 1๊ณผ 0์˜ ๊ฐ’์„ ๊ฐ–๊ณ  ์žˆ๊ธฐ์— ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ์•”๋ฌต์  ํ˜•๋ณ€ํ™˜(Implicit Coercion)๋œ ์ƒํƒœ์ด๋‹ค. ์•„๋ž˜ ๊ธ€์„ ์ฐธ์กฐํ•˜์ž.
1 + false; // 1

// null์€ 0์œผ๋กœ ํƒ€์ž…์ด ๋ณ€ํ™˜๋œ๋‹ค.
1 + null; // 1

// undefined๋Š” ์ˆซ์ž๋กœ ํƒ€์ž… ๋ณ€ํ™˜๋˜์ง€ ์•Š๋Š”๋‹ค.
+undefined; // NaN
1 + undefined; // NaN

ํ• ๋‹น ์—ฐ์‚ฐ์ž(Assignment Operator)

  • ํ• ๋‹น ์—ฐ์‚ฐ์ž๋Š” ์šฐํ•ญ์— ์žˆ๋Š” ํ”ผ์—ฐ์‚ฐ์ž์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๋ฅผ ์ขŒํ•ญ์— ์žˆ๋Š” ๋ณ€์ˆ˜์— ํ• ๋‹นํ•œ๋‹ค.

ํ• ๋‹น ์—ฐ์‚ฐ์ž

๋น„๊ต ์—ฐ์‚ฐ์ž(Comparison Operator)

  • ๋น„๊ต ์—ฐ์‚ฐ์ž๋Š” ์ขŒํ•ญ๊ณผ ์šฐํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋น„๊ตํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ๋ถˆ๋ฆฌ์–ธ(Boolean) ๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋™๋“ฑ/์ผ์น˜ ๋น„๊ต ์—ฐ์‚ฐ์ž

  • ๋™๋“ฑ ๋น„๊ต(Loose Equality, ๋Š์Šจํ•œ ๋น„๊ต) ์—ฐ์‚ฐ์ž: ์ขŒํ•ญ๊ณผ ์šฐํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋น„๊ตํ•  ๋•Œ ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜์„ ํ†ตํ•ด ํƒ€์ž…์„ ์ผ์น˜์‹œํ‚จ ๋’ค ๊ฐ’๋งŒ ๋น„๊ตํ•œ๋‹ค.
  • ์ผ์น˜ ๋น„๊ต(Strict Equality, ์—„๊ฒฉํ•œ ๋น„๊ต) ์—ฐ์‚ฐ์ž: ์ขŒํ•ญ๊ณผ ์šฐํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ํƒ€์ž…๋„ ๊ฐ™๊ณ  ๊ฐ’๋„ ๊ฐ™์€ ๊ฒฝ์šฐ์— ํ•œํ•˜์—ฌ true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋‘˜ ์ค‘์— ํ•˜๋‚˜๋ผ๋„ ๋‹ค๋ฅผ ์‹œ false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋น„๊ต ์—ฐ์‚ฐ์ž

// ๋™๋“ฑ ๋น„๊ต
5 == 5; // true

// ํƒ€์ž…์€ ๋‹ค๋ฅด์ง€๋งŒ ์•”๋ฌต์  ํ˜•๋ณ€ํ™˜์„ ํ†ตํ•ด true ๊ฐ’ ๋ฐ˜ํ™˜
5 == '5'; // true

// ์ผ์น˜ ๋น„๊ต๋ฅผ ํ•˜๋ฉด false ๊ฐ’ ๋ฐ˜ํ™˜
5 === '5'; // false

// ๋‹จ ์ผ์น˜ ๋น„๊ต ์—ฐ์‚ฐ์ž์—์„œ NaN์„ ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค.
NaN === NaN // false

// ์ˆซ์ž๊ฐ€ NaN์ธ์ง€ ์กฐ์‚ฌํ•˜๋ ค๋ฉด ๋นŒํŠธ ํ•จ์ˆ˜์ธ isNaN์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.
isNaN(NaN); // true
isNaN(10); // false
isNaN(1 + undefined); // true

// ๋ถ€๋™๋“ฑ ๋น„๊ต ์—ฐ์‚ฐ์ž (!=)์™€ ๋ถˆ์ผ์น˜ ๋น„๊ต ์—ฐ์‚ฐ์ž(!==)๋Š” ๋™๋“ฑ ๋น„๊ต(==) ์—ฐ์‚ฐ์ž์™€ ์ผ์น˜ ๋น„๊ต(===) ์—ฐ์‚ฐ์ž์˜ ๋ฐ˜๋Œ€ ๊ฐœ๋…์ด๋‹ค.

๋Œ€์†Œ ๊ด€๊ณ„ ๋น„๊ต ์—ฐ์‚ฐ์ž

  • ํ”ผ์—ฐ์‚ฐ์ž์˜ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•˜์—ฌ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์„ ๋ฐ˜ํ™˜

๋Œ€์†Œ ๊ด€๊ณ„ ๋น„๊ต ์—ฐ์‚ฐ์ž

์‚ผํ•ญ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž

์กฐ๊ฑด์‹ ? ์กฐ๊ฑด์‹์ด true์ผ ๋•Œ ๋ฐ˜ํ™˜ ๊ฐ’ : ์กฐ๊ฑด์‹์ด false์ผ ๋•Œ ๋ฐ˜ํ™˜ํ•  ๊ฐ’

var result = scroe > 60 ? 'pass' : 'fail';
  • ์‚ผํ•ญ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž์˜ ์ฒซ ํ”ผ์—ฐ์‚ฐ์ž๋Š” ์กฐ๊ฑด์‹์ด๋ฏ€๋กœ if...else๋ฌธ์„ ์‚ฌ์šฉํ•ด๋„ ์œ ์‚ฌํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
var x = 2, result;

// 2 % 2๋Š” 0์ด๊ณ  0์€ false๋กœ ์•”๋ฌต์  ํ˜•๋ณ€ํ™˜.
if(x % 2) result = 'ํ™€์ˆ˜';
else result = '์ง์ˆ˜';

console.log(result); // ์ง์ˆ˜
  • ํ•˜์ง€๋งŒ, ์‚ผํ•ญ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž ํ‘œํ˜„์‹์€ if ... else ๋ฌธ๊ณผ ์ค‘์š”ํ•œ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. ์‚ผํ•ญ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž ํ‘œํ˜„์‹์€ ๊ฐ’์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ if ... else ๋ฌธ์€ ๊ฐ’์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
// ์‚ผํ•ญ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž ํ‘œํ˜„
var x = 10;

var result = x % 2 ? 'ํ™€์ˆ˜' : '์ง์ˆ˜';
console.log(result); // ์ง์ˆ˜

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž(Logical Operator)

  • ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋Š” ์šฐํ•ญ๊ณผ ์ขŒํ•ญ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋…ผ๋ฆฌ ์—ฐ์‚ฐํ•œ๋‹ค.

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž

// ๋…ผ๋ฆฌํ•ฉ(||) ์—ฐ์‚ฐ์ž, ์ขŒํ•ญ/์šฐํ•ญ ์ค‘ ํ•œ ๊ฐ’๋งŒ true ๊ฐ’์ด๋ฉด true ๋ฐ˜ํ™˜
true || true; // true
true || false; // true
false || false; // false

// ๋…ผ๋ฆฌ๊ณฑ(&&) ์—ฐ์‚ฐ์ž, ์ขŒํ•ญ/์šฐํ•ญ ๋ชจ๋‘ true ๊ฐ’์ด์–ด์•ผ true ๋ฐ˜ํ™˜
true && true; // true
true && false; // false
false && false; // false

// ๋ถ€์ •(!) ์—ฐ์‚ฐ์ž, ์ขŒํ•ญ/์šฐํ•ญ ๋น„๊ตํ•˜์—ฌ false ๊ฐ’์ด๋ฉด true ๋ฐ˜ํ™˜
true != true; // false
true != false; // true
false != false; // false

typeof ์—ฐ์‚ฐ์ž

  • ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ 7๊ฐ€์ง€ ๋ฌธ์ž์—ด์ค‘ ํ•˜๋‚˜๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • string
  • number
  • boolean
  • undefined
  • symbol
  • object
  • function

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

 

์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„ - JavaScript | MDN

์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„๋Š” ์—ฐ์‚ฐ์ž๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์—ฐ์‚ฐ์ž๊ฐ€ ๋จผ์ € ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

developer.mozilla.org

์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ธ€

 

[๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 33๊ฐ€์ง€ ๊ฐœ๋…] 4. ์•”์‹œ์  ํ˜•๋ณ€ํ™˜, ๋ช…์‹œ์  ํ˜•๋ณ€ํ™˜, Nominal,

์˜คํ”ˆ์†Œ์Šค ๊นƒํ—ˆ๋ธŒ ์ฃผ์†Œ: https://github.com/yjs03057/33-js-concepts GitHub - yjs03057/33-js-concepts: ๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 33๊ฐ€์ง€ ๊ฐœ๋… ๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 33๊ฐ€์ง€..

eun-ng.tistory.com

 

[๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 33๊ฐ€์ง€ ๊ฐœ๋…] 5. == & === & typeof

์˜คํ”ˆ์†Œ์Šค ๊นƒํ—ˆ๋ธŒ ์ฃผ์†Œ: https://github.com/yjs03057/33-js-concepts GitHub - yjs03057/33-js-concepts: ๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 33๊ฐ€์ง€ ๊ฐœ๋… ๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 33๊ฐ€์ง€..

eun-ng.tistory.com

๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค!