Operator - wooyeonhui/Yeonny GitHub Wiki

๋Œ€์ž…์—ฐ์‚ฐ์ž

Example Same As ใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…—ใ…กใ…กใ…กใ…กใ…กใ…ก


x = y x = y x+=y x = x + y x-=y x = x - y x*=y x = x * y x/=y x = x / y x%=y x = x % y

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

Operator Description == ๋™๋“ฑ๋น„๊ต(loose equality) ํ˜•๋ณ€ํ™˜ ํ›„, ๋น„๊ตํ•œ๋‹ค. === ์ผ์น˜๋น„๊ต(strict equality) ํƒ€์ž…๊นŒ์ง€ ์ผ์น˜ํ•˜์—ฌ์•ผ true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. != !==

<

= <= ? ์‚ผํ•ญ ์—ฐ์‚ฐ์ž

//์‚ผํ•ญ์—ฐ์‚ฐ์ž (ternary operator) //์กฐ๊ฑด ? ์กฐ๊ฑด์ด true์ผ๋•Œ ๋ฐ˜ํ™˜ํ•  ๊ฐ’ : ์กฐ๊ฑด์ด false์ผ๋•Œ ๋ฐ˜ํ™˜ํ•  ๊ฐ’ var condition = true; var result = condition ? 'true' : 'false'; console.log(result); //'true'

// id์˜ ๊ธธ์ด๊ฐ€ INPUT_ID_MIN_LEN๋ณด๋‹ค ์ž‘์œผ๋ฉด ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. var id = 'lee'; var INPUT_ID_MIN_LEN = 5; var errMsg = id.length < INPUT_ID_MIN_LEN ? '์•„์ด๋””๋Š” 5์ž๋ฆฌ ์ด์ƒ์œผ๋กœ ์ž…๋ ฅํ•˜์„ธ์š”' : '์„ฑ๊ณต'; console.log(errMsg); // '์•„์ด๋””๋Š” 5์ž๋ฆฌ ์ด์ƒ์œผ๋กœ ์ž…๋ ฅํ•˜์„ธ์š”'

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

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

|| OR && AND ! NOT

๋‹จ์ถ• ํ‰๊ฐ€(Short-Circuit Evaluation)

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

ํ‰๊ฐ€์‹                      ํ‰๊ฐ€๊ฒฐ๊ณผ

true || anything true false || anything anything true && anything anything false && anything false

Boolean ๊ฐ’์œผ๋กœ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์ฐธ์กฐํ•˜์—ฌ์•ผ ํ•  ๊ณณ๊นŒ์ง€ ์ง„ํ–‰ํ•œ ํ›„, ํ‰๊ฐ€๋ฅผ ์ค‘์ง€ํ•˜๊ฒŒ๋œ ๊ณ„๊ธฐ๊ฐ€ ๋œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

var foo = 'Cat' && 'Dog' // t && t return 'Dog'

์ด๊ฒฝ์šฐ, 'Cat'์€ true๋กœ ํ‰๊ฐ€๋˜๋ฏ€๋กœ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” 'Dog'๊นŒ์ง€ ํ‰๊ฐ€ํ•ด ๋ณด์•„์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํ‰๊ฐ€๋ฅผ ์ค‘์ง€ํ•˜๊ฒŒ๋œ ๊ณ„๊ธฐ๊ฐ€ ๋œ ๊ฐ’('Dog')์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

var foo = false && 'Cat' // f && t returns false

์ด ๊ฒฝ์šฐ, false ๊ฐ€ ์ฒ˜์Œ ๋“ฑ์žฅํ•˜์˜€๋‹ค. ๋” ์ด์ƒ ์ง„ํ–‰ํ•˜์ง€ ์•Š์•„๋„ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ‰๊ฐ€๋Š” ์ค‘์ง€๋˜๊ณ  ํ‰๊ฐ€๋ฅผ ์ค‘์ง€ํ•˜๊ฒŒ๋œ ๊ณ„๊ธฐ๊ฐ€ ๋œ ๊ฐ’์ธ false๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค.

var foo = 'Cat' || 'Dog' // t || t returns 'Cat'

์ด ๊ฒฝ์šฐ, 'Cat'์€ true๋กœ ํ‰๊ฐ€๋˜๋ฏ€๋กœ ํ‰๊ฐ€๋Š” ์ค‘์ง€๋˜๊ณ  Cat์ด ๋ฐ˜ํ™˜๋œ๋‹ค.

// || (๋…ผ๋ฆฌ ํ•ฉ) ์—ฐ์‚ฐ์ž var o1 = 'Cat' || 'Dog'; // t || t returns Cat var o2 = false || 'Cat'; // f || t returns Cat var o3 = 'Cat' || false; // t || f returns Cat

// && (๋…ผ๋ฆฌ๊ณฑ) ์—ฐ์‚ฐ์ž var a1 = 'Cat' && 'Dog'; // t && t returns Dog var a2 = false && 'Cat'; // f && t returns false var a3 = 'Cat' && false; // t && f returns false

// example function foo (str) { str = str || ''; // do somethig with str console.log(str.length); }

foo(); // 0 foo('hi'); // 2

// example var obj = { // foo: 'hi', bar: 'hey' };

console.log('obj.foo is ' + obj.foo); // obj.foo is undefined

if (obj && obj.foo) { // do somethig with obj.foo console.log('obj.foo is ' + obj.foo); }

ํƒ€์ž… ์—ฐ์‚ฐ์ž (Type Operators)

Operator Description typeof ๋ณ€์ˆ˜์˜ ์ž๋ฃŒํ˜•์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. null๊ณผ ๋ฐฐ์—ด์˜ ๊ฒฝ์šฐ object,ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ function๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์— ์œ ์˜ํ•˜์—ฌ์•ผ ํ•œ๋‹ค. instanceof ๊ฐ์ฒด๊ฐ€ ๋™์ผ ๊ฐ์ฒดํ˜•์˜ ์ธ์Šคํ„ด์Šค์ด๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

typeof 'John' // returns string typeof 3.14 // returns number typeof NaN // returns number typeof false // returns boolean typeof [1, 2, 3, 4] // returns object typeof {name:'John', age:34} // returns object typeof new Date() // returns object typeof function () {} // returns function typeof myCar // returns undefined (์„ค๊ณ„์  ๊ฒฐํ•จ) typeof null // returns object (์„ค๊ณ„์  ๊ฒฐํ•จ)

function Person(){} var me = new Person() me instanceof Person // returns true

!!

feel like ์žˆ๋‹ค ์—†๋‹ค

console.log(!!1); // true console.log(!!0); // false console.log(!!'string'); // true console.log(!!''); // false console.log(!!null); // false console.log(!!undefined); // false console.log(!!{}); // true console.log(!![]); // true

๊ฐ์ฒด(๋ฐฐ์—ด ํฌํ•จ)์˜ ๊ฒฝ์šฐ ๋นˆ ๊ฐ์ฒด๋ผ๋„ ์กด์žฌํ•˜๊ธฐ๋งŒํ•˜๋ฉด true๋กœ ๋ณ€ํ™˜๋œ๋‹ค. ๊ฐ์ฒด์˜ ์กด์žฌ ํ™•์ธ ํ›„ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, !!๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ•์ œ๋กœ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ boolean์œผ๋กœ ํ˜• ๋ณ€ํ™˜ ํ•  ์ˆ˜ ์žˆ๋‹ค.

var obj; console.log(!!obj); //false

obj = {}; console.log(!!obj); //true