This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

ํ‘œํ˜„์‹๊ณผ ์—ฐ์‚ฐ์ž

์ด๋ฒˆ ์žฅ์—์„œ๋Š” JavaScript์˜ ํ‘œํ˜„์‹๊ณผ ํ•จ๊ป˜ ํ• ๋‹น, ๋น„๊ต, ์‚ฐ์ˆ , ๋น„ํŠธ ๊ณ„์‚ฐ, ๋…ผ๋ฆฌ, ๋ฌธ์ž์—ด, ์‚ผํ•ญ ๋“ฑ ๋‹ค์–‘ํ•œ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ์„œ์—์„œ ๋ชจ๋“  ์—ฐ์‚ฐ์ž์™€ ํ‘œํ˜„์‹์˜ ์ž์„ธํ•œ ๋ชฉ๋ก๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฐ์‚ฐ์ž

JavaScript์˜ ์—ฐ์‚ฐ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์œ ํ˜•์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ ˆ์€ ๊ฐ๊ฐ์˜ ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ , ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„์— ๊ด€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

JavaScript๋Š” ์ดํ•ญ ์—ฐ์‚ฐ์ž์™€ ๋‹จํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•˜๋ฉฐ, ์œ ์ผํ•œ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋กœ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž๋„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ดํ•ญ ์—ฐ์‚ฐ์ž๋Š” ์—ฐ์‚ฐ์ž์˜ ์•ž๊ณผ ๋’ค์— ํ•˜๋‚˜์”ฉ ์ด ๋‘ ๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

js
ํ”ผ์—ฐ์‚ฐ์ž1 ์—ฐ์‚ฐ์ž ํ”ผ์—ฐ์‚ฐ์ž2

์ดํ•ญ ์—ฐ์‚ฐ์ž์˜ ์˜ˆ์‹œ๋กœ๋Š” 3+4์™€ x*y๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จํ•ญ ์—ฐ์‚ฐ์ž๋Š” ์—ฐ์‚ฐ์ž์˜ ์•ž์ด๋‚˜ ๋’ค์— ํ•˜๋‚˜์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

js
์—ฐ์‚ฐ์ž ํ”ผ์—ฐ์‚ฐ์ž

๋˜๋Š”

js
ํ”ผ์—ฐ์‚ฐ์ž ์—ฐ์‚ฐ์ž

๋‹จํ•ญ ์—ฐ์‚ฐ์ž์˜ ์˜ˆ์‹œ๋กœ๋Š” x++ ๋˜๋Š” ++x๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

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

ํ• ๋‹น ์—ฐ์‚ฐ์ž๋Š” ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์„ ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ํ• ๋‹น ์—ฐ์‚ฐ์ž๋Š” ์˜ค๋ฅธ์ชฝ์˜ ํ”ผ์—ฐ์‚ฐ์ž ๊ฐ’์„ ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž ๊ฐ’์— ํ• ๋‹นํ•˜๋Š” ๋“ฑํ˜ธ(=)๋กœ, x = y ๋Š” y์˜ ๊ฐ’์„ x์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜์˜ ํ‘œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ, ์—ฐ์‚ฐ๊ณผ ํ• ๋‹น์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๋Š” ๋ณตํ•ฉ ํ• ๋‹น ์—ฐ์‚ฐ์ž๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฆ„ ๋‹จ์ถ• ์—ฐ์‚ฐ์ž ๋œป
ํ• ๋‹น 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
๊ฑฐ๋“ญ์ œ๊ณฑ ํ• ๋‹น x **= y x = x ** y
์™ผ์ชฝ ์‹œํ”„ํŠธ ํ• ๋‹น x <<= y x = x << y
์˜ค๋ฅธ์ชฝ ์‹œํ”„ํŠธ ํ• ๋‹น x >>= y x = x >> y
๋ถ€ํ˜ธ ์—†๋Š” ์˜ค๋ฅธ์ชฝ ์‹œํ”„ํŠธ ํ• ๋‹น x >>>= y x = x >>> y
๋น„ํŠธ AND ํ• ๋‹น x &= y x = x & y
๋น„ํŠธ XOR ํ• ๋‹น x ^= y x = x ^ y
๋น„ํŠธ OR ํ• ๋‹น x |= y x = x | y
๋…ผ๋ฆฌ AND ํ• ๋‹น x &&= y x && (x = y)
๋…ผ๋ฆฌ OR ํ• ๋‹น x ||= y x || (x = y)
๋„ ๋ณ‘ํ•ฉ ํ• ๋‹น x ??= y x ?? (x = y)

์†์„ฑ ํ• ๋‹น

์–ด๋–ค ํ‘œํ˜„์‹์ด ๊ฐ์ฒด๋กœ ํ‰๊ฐ€๋œ๋‹ค๋ฉด, ํ• ๋‹น ํ‘œํ˜„์‹์˜ ์ขŒํ•ญ์€ ๊ฐ์ฒด๋กœ ํ‰๊ฐ€๋˜๋Š” ํ‘œํ˜„์‹์˜ ์†์„ฑ์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด,

js
let obj = {};

obj.x = 3;
console.log(obj.x); // 3 ์ถœ๋ ฅ.
console.log(obj); // { x: 3 } ์ถœ๋ ฅ.

const key = "y";
obj[key] = 5;
console.log(obj[key]); // 5 ์ถœ๋ ฅ.
console.log(obj); // { x: 3, y: 5 } ์ถœ๋ ฅ.

๊ฐ์ฒด์— ๊ด€ํ•œ ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ๊ฐ์ฒด๋กœ ์ž‘์—…ํ•˜๊ธฐ์—์„œ ์ฐพ์•„๋ณด์„ธ์š”.

์–ด๋–ค ํ‘œํ˜„์‹์ด ๊ฐ์ฒด๋กœ ํ‰๊ฐ€๋˜์ง€ ์•Š์œผ๋ฉด, ๊ทธ ํ‘œํ˜„์‹์˜ ์†์„ฑ์— ๋Œ€ํ•œ ํ• ๋‹น ํ‘œํ˜„์‹์€ ์‹ค์ œ๋กœ๋Š” ํ• ๋‹นํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

js
let val = 0;

console.log((val.x = 3)); // 3 ์ถœ๋ ฅ.
console.log(val.x); // undefined ์ถœ๋ ฅ.
console.log(val); // 0 ์ถœ๋ ฅ.

์ˆ˜์ • ๋ถˆ๊ฐ€๋Šฅํ•œ ์†์„ฑ์ด๋‚˜, ์†์„ฑ์ด ์—†๋Š” ํ‘œํ˜„์‹(null์ด๋‚˜ undefined)์œผ๋กœ ํ• ๋‹น์„ ์‹œ๋„ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์กฐ ๋ถ„ํ•ด

๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น ๊ตฌ๋ฌธ์€ JavaScript ํ‘œํ˜„์‹ ์ค‘ ํ•˜๋‚˜๋กœ, ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•  ๋•Œ์™€ ๋น„์Šทํ•œ ๊ตฌ๋ฌธ์œผ๋กœ ์‚ฌ์šฉํ•ด์„œ ์–ด๋–ค ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

js
var foo = ["one", "two", "three"];

// ๊ตฌ์กฐ ๋ถ„ํ•ด ์—†์Œ
var one = foo[0];
var two = foo[1];
var three = foo[2];

// ๊ตฌ์กฐ ๋ถ„ํ•ด ์‚ฌ์šฉ
var [one, two, three] = foo;

๋ฐ˜ํ™˜ ๊ฐ’๊ณผ ์ฒด์ด๋‹

์ผ๋ฐ˜์ ์œผ๋กœ, ํ• ๋‹น ํ‘œํ˜„์‹์€ ๋ณ€์ˆ˜ ์„ ์–ธ(const, let, var)๊ณผ ํ•จ๊ป˜ ์“ฐ์ด๊ฑฐ๋‚˜ ๋…๋ฆฝ์ ์ธ ๋ช…๋ น๋ฌธ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

js
// ๋ณ€์ˆ˜ x๋ฅผ ์„ ์–ธํ•ด์„œ f()์˜ ๊ฒฐ๊ณผ๋กœ ์ดˆ๊ธฐํ™”,
// x = f() ํ• ๋‹น ํ‘œํ˜„์‹์˜ ๊ฒฐ๊ณผ๋Š” ๋ฒ„๋ ค์ง.
let x = f();

// ๋ณ€์ˆ˜ x๋ฅผ ์„ ์–ธํ•ด์„œ g()์˜ ๊ฒฐ๊ณผ๋กœ ์ดˆ๊ธฐํ™”,
// x = g() ํ• ๋‹น ํ‘œํ˜„์‹์˜ ๊ฒฐ๊ณผ๋Š” ๋ฒ„๋ ค์ง.
x = g(); // ๋ณ€์ˆ˜ x๋ฅผ g()์˜ ๊ฒฐ๊ณผ๋กœ ์žฌํ• ๋‹น.

๊ทธ๋Ÿฐ๋ฐ, ๋‹ค๋ฅธ ํ‘œํ˜„์‹๋“ค์ฒ˜๋Ÿผ x = f()์™€ ๊ฐ™์€ ํ• ๋‹น ํ‘œํ˜„์‹๋„ ๊ฒฐ๊ณผ ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ์ด ๊ฐ’์„ ์‚ฌ์šฉํ•˜์ง„ ์•Š์ง€๋งŒ, ๊ทธ๋ž˜๋„ ๋‹ค๋ฅธ ํ‰๊ฐ€์‹์˜ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์€ ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ• ๋‹น ์ฒด์ด๋‹์ด๋‚˜, ๋‹ค๋ฅธ ํ‘œํ˜„์‹์— ์ค‘์ฒฉ๋œ ํ• ๋‹น์€ ์˜ˆ์ƒํ•˜๊ธฐ ํž˜๋“  ๋™์ž‘์„ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์–ด๋–ค JavaScript ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ์—์„œ๋Š” ํ• ๋‹น์„ ์ฒด์ด๋‹ํ•˜๊ฑฐ๋‚˜ ์ค‘์ฒฉํ•˜๋Š” ๊ฑธ ์ง€์–‘ํ•˜๋ผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“ , ํ• ๋‹น ์ฒด์ด๋‹๊ณผ ์ค‘์ฒฉ์„ ๊ฐ€๋” ๋งˆ์ฃผ์น˜๊ฒŒ ๋˜๋ฏ€๋กœ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€๋Š” ์•Œ์•„๋‘๋Š” ๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.

ํ• ๋‹น ํ‘œํ˜„์‹์„ ์ฒด์ด๋‹ํ•˜๊ฑฐ๋‚˜ ์ค‘์ฒฉํ•จ์œผ๋กœ์จ ํ• ๋‹น์˜ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ์ฝ˜์†”์— ๊ธฐ๋กํ•  ์ˆ˜๋„ ์žˆ๊ณ , ๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด์ด๋‚˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ์— ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

js
let x;
const y = (x = f()); // ๋˜๋Š” const y = x = f(); ์™€ ๊ฐ™์Œ.
console.log(y); // x = f() ํ• ๋‹น์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ๊ธฐ๋ก.

console.log((x = f())); // ๋ฐ˜ํ™˜ ๊ฐ’์„ ์ง์ ‘ ๊ธฐ๋ก.

// ํ• ๋‹น ํ‘œํ˜„์‹์€ ๋ณดํ†ต ํ‘œํ˜„์‹์„ ๊ธฐ๋Œ€ํ•˜๋Š” ๊ณณ์ด๋ผ๋ฉด
// ์–ด๋””์—๋‚˜ ์ค‘์ฒฉํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ
// ๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด์˜ ์š”์†Œ๋‚˜ ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋„ ๊ทธ๋Ÿฐ ๊ณณ ์ค‘ ์ผ๋ถ€์ž„.
console.log([0, (x = f()), 0]);
console.log(f(0, (x = f()), 0));

ํ‰๊ฐ€ ๊ฒฐ๊ณผ๋Š” ์œ„์ชฝ ํ‘œ์˜ "๋œป" ์—ด์—์„œ = ๊ธฐํ˜ธ์˜ ์šฐํ•ญ ํ‘œํ˜„์‹ ๊ฒฐ๊ณผ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ x = f()์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๋Š” f()์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ์™€ ๊ฐ™๊ณ , x += f()์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๋Š” x + f()์™€ ๊ฐ™์œผ๋ฉฐ, x **= f()๋Š” x ** y์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋…ผ๋ฆฌ ํ• ๋‹น์ธ (x &&= y), (x ||= y), (x ??= y)์˜ ๊ฒฝ์šฐ์—๋Š” ํ• ๋‹น ๋ถ€๋ถ„์„ ์ œ์™ธํ•œ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ๊ฐ x && y, x || y, x ?? y์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

ํ• ๋‹น ํ‘œํ˜„์‹์„ ๊ด„ํ˜ธ๋‚˜ ๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด๊ฐ™์€ ๊ทธ๋ฃน ์—ฐ์‚ฐ์ž ์—†์ด ์ฒด์ด๋‹ํ•˜๋ฉด, ํ• ๋‹น ํ‘œํ˜„์‹์€ ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ๋ฌถ์ด์ง€๋งŒ(์šฐ์ธก ๊ฒฐํ•ฉ), ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ, ์ˆœ์ˆ˜ํ•œ =์„ ์ œ์™ธํ•œ ๋ชจ๋“  ํ• ๋‹น ์—ฐ์‚ฐ์ž์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ ๊ฐ’์€ ํ•ญ์ƒ ๊ณ„์‚ฐํ•˜๊ธฐ ์ „์˜ ๊ฐ’์— ๊ธฐ๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•จ์ˆ˜ f, g์™€ ๋ณ€์ˆ˜ x, y๊ฐ€ ์„ ์–ธ๋œ ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

js
function f() {
  console.log("F!");
  return 2;
}
function g() {
  console.log("G!");
  return 3;
}
let x, y;

๋‹ค์Œ ์„ธ ์˜ˆ์ œ๋ฅผ ํ™•์ธํ•ด ๋ณด์„ธ์š”.

js
y = x = f();
y = [f(), (x = g())];
x[f()] = g();
ํ‰๊ฐ€ ์˜ˆ์ œ 1

=์€ ์šฐ์ธก ๊ฒฐํ•ฉ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— y = x = f()๋Š” y = (x = f())์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ‰๊ฐ€๋Š” ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋‚˜์•„๊ฐ€๋ฏ€๋กœ,

  1. ํ• ๋‹น ํ‘œํ˜„์‹ y = x = f()์˜ ํ‰๊ฐ€๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
    1. ์ด ํ• ๋‹น์˜ ์ขŒํ•ญ์ธ y๊ฐ€, y๋ผ๋Š” ์ด๋ฆ„์˜ ๋ณ€์ˆ˜ ์ฐธ์กฐ๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.
    2. ํ• ๋‹น ํ‘œํ˜„์‹ x = f()์˜ ํ‰๊ฐ€๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
      1. ์ด ํ• ๋‹น์˜ ์ขŒํ•ญ์ธ x๊ฐ€, x๋ผ๋Š” ์ด๋ฆ„์˜ ๋ณ€์ˆ˜ ์ฐธ์กฐ๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.
      2. ํ•จ์ˆ˜ ํ˜ธ์ถœ f()๊ฐ€ ์ฝ˜์†”์— "F!"๋ฅผ ๊ธฐ๋กํ•œ ํ›„ ์ˆซ์ž 2๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.
      3. f()์˜ ๊ฒฐ๊ณผ์ธ 2๋ฅผ x์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
    3. ํ• ๋‹น ํ‘œํ˜„์‹ x = f()์˜ ํ‰๊ฐ€๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ํ‘œํ˜„์‹์˜ ๊ฒฐ๊ณผ ๊ฐ’์€ x์˜ ์ƒˆ๋กœ์šด ๊ฐ’, ์ฆ‰ 2์ž…๋‹ˆ๋‹ค.
    4. ์œ„์˜ ๊ฒฐ๊ณผ์ธ 2๋ฅผ y์—๋„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
  2. ํ• ๋‹น ํ‘œํ˜„์‹ y = x = f()์˜ ํ‰๊ฐ€๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ํ‘œํ˜„์‹์˜ ๊ฒฐ๊ณผ ๊ฐ’์€ y์˜ ์ƒˆ๋กœ์šด ๊ฐ’, ์ฆ‰ 2์ž…๋‹ˆ๋‹ค. x์™€ y์— 2๋ฅผ ํ• ๋‹นํ–ˆ๊ณ , ์ฝ˜์†”์—๋Š” "F!"๋ฅผ ๊ธฐ๋กํ–ˆ์Šต๋‹ˆ๋‹ค.
ํ‰๊ฐ€ ์˜ˆ์ œ 2

y = [ f(), x = g() ] ๋˜ํ•œ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  1. ํ• ๋‹น ํ‘œํ˜„์‹ y = [ f(), x = g() ]์˜ ํ‰๊ฐ€๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
    1. ์ด ํ• ๋‹น์˜ ์ขŒํ•ญ์ธ y๊ฐ€, y๋ผ๋Š” ์ด๋ฆ„์˜ ๋ณ€์ˆ˜ ์ฐธ์กฐ๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.
    2. ๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด [ f(), x = g() ]์˜ ํ‰๊ฐ€๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
      1. ํ•จ์ˆ˜ ํ˜ธ์ถœ f()๊ฐ€ ์ฝ˜์†”์— "F!"๋ฅผ ๊ธฐ๋กํ•œ ํ›„ ์ˆซ์ž 2๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.
      2. ํ• ๋‹น ํ‘œํ˜„์‹ x = g()์˜ ํ‰๊ฐ€๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
        1. ์ด ํ• ๋‹น์˜ ์ขŒํ•ญ์ธ x๊ฐ€, x๋ผ๋Š” ์ด๋ฆ„์˜ ๋ณ€์ˆ˜ ์ฐธ์กฐ๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.
        2. ํ•จ์ˆ˜ ํ˜ธ์ถœ g()๊ฐ€ ์ฝ˜์†”์— "G!"๋ฅผ ๊ธฐ๋กํ•œ ํ›„ ์ˆซ์ž 3์œผ๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.
        3. g()์˜ ๊ฒฐ๊ณผ์ธ 3์„ x์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
      3. ํ• ๋‹น ํ‘œํ˜„์‹ x = g()์˜ ํ‰๊ฐ€๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ํ‘œํ˜„์‹์˜ ๊ฒฐ๊ณผ ๊ฐ’์€ x์˜ ์ƒˆ๋กœ์šด ๊ฐ’, ์ฆ‰ 3์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฐ๊ณผ์ธ 3์ด ๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด์˜ ๋‘ ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. (์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋Š” f()์˜ ๊ฒฐ๊ณผ์ธ 2์ž…๋‹ˆ๋‹ค)
    3. ๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด [ f(), x = g() ]์˜ ํ‰๊ฐ€๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ๋Š” ๋‘ ๊ฐœ์˜ ์š”์†Œ๋ฅผ ๊ฐ€์ง„ ๋ฐฐ์—ด, [ 2, 3 ]์ž…๋‹ˆ๋‹ค.
    4. ์œ„์˜ ๊ฒฐ๊ณผ์ธ [ 2, 3 ] ๋ฐฐ์—ด์„ y์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
  2. ํ• ๋‹น ํ‘œํ˜„์‹ y = [ f(), x = g() ]์˜ ํ‰๊ฐ€๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ํ‘œํ˜„์‹์˜ ๊ฒฐ๊ณผ ๊ฐ’์€ y์˜ ์ƒˆ๋กœ์šด ๊ฐ’, ์ฆ‰ [ 2, 3 ]์ž…๋‹ˆ๋‹ค. x์—๋Š” 3, y์—๋Š” [ 2, 3 ]์ด ํ• ๋‹น๋๊ณ , ์ฝ˜์†”์—๋Š” "F!" ํ›„์— "G!"๋ฅผ ๊ธฐ๋กํ–ˆ์Šต๋‹ˆ๋‹ค.
ํ‰๊ฐ€ ์˜ˆ์ œ 3

x[f()] = g() ๋˜ํ•œ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. (์ด ์˜ˆ์ œ๋Š” ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ x์— ํ• ๋‹น๋๋‹ค๋Š” ์ถ”๊ฐ€ ๊ฐ€์ • ํ•˜์— ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์ฒด์— ๊ด€ํ•œ ๋” ๋งŽ์€ ์ •๋ณด๋Š” ๊ฐ์ฒด๋กœ ์ž‘์—…ํ•˜๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”)

  1. ํ• ๋‹น ํ‘œํ˜„์‹ x[f()] = g()์˜ ํ‰๊ฐ€๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
    1. ์ด ํ• ๋‹น์˜ ์ขŒํ•ญ์ธ x[f()] ์†์„ฑ ์ ‘๊ทผ์˜ ํ‰๊ฐ€๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
      1. ์ด ์†์„ฑ ์ ‘๊ทผ์˜ x๊ฐ€, x๋ผ๋Š” ์ด๋ฆ„์˜ ๋ณ€์ˆ˜ ์ฐธ์กฐ๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.
      2. ํ•จ์ˆ˜ ํ˜ธ์ถœ f()๊ฐ€ ์ฝ˜์†”์— "F!"๋ฅผ ๊ธฐ๋กํ•œ ํ›„ ์ˆซ์ž 2๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.
    2. ์ด ํ• ๋‹น์˜ ์†์„ฑ ์ ‘๊ทผ x[f()]์˜ ํ‰๊ฐ€๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ ๊ฐ’์€ ๋ณ€์ˆ˜ ์†์„ฑ ์ฐธ์กฐ x[2]์ž…๋‹ˆ๋‹ค.
    3. ๋‹ค์Œ์œผ๋กœ, ํ•จ์ˆ˜ ํ˜ธ์ถœ g()๊ฐ€ ์ฝ˜์†”์— "G!"๋ฅผ ๊ธฐ๋กํ•œ ํ›„ ์ˆซ์ž 3์œผ๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.
    4. g()์˜ ๊ฒฐ๊ณผ์ธ 3์„ x[2]์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. (์ด ๋‹จ๊ณ„๋Š” x์— ๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ํ• ๋‹นํ•œ ๊ฒฝ์šฐ์—๋งŒ ์„ฑ๊ณตํ•ฉ๋‹ˆ๋‹ค)
  2. ํ• ๋‹น ํ‘œํ˜„์‹ x[f()] = g()์˜ ํ‰๊ฐ€๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ํ‘œํ˜„์‹์˜ ๊ฒฐ๊ณผ ๊ฐ’์€ x[2]์˜ ์ƒˆ๋กœ์šด ๊ฐ’, ์ฆ‰ 3์ž…๋‹ˆ๋‹ค. x[2]์—๋Š” 3์ด ํ• ๋‹น๋๊ณ , ์ฝ˜์†”์—๋Š” "F!" ํ›„์— "G!"๋ฅผ ๊ธฐ๋กํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ• ๋‹น ์ฒด์ด๋‹์„ ํ”ผํ•ด์•ผ ํ•  ์ด์œ 

ํ• ๋‹น ์ฒด์ด๋‹์ด๋‚˜, ๋‹ค๋ฅธ ํ‘œํ˜„์‹์— ์ค‘์ฒฉ๋œ ํ• ๋‹น์€ ์˜ˆ์ƒํ•˜๊ธฐ ํž˜๋“  ๋™์ž‘์„ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•˜๋‚˜์˜ ๋ช…๋ น๋ฌธ ๋‚ด์—์„œ ํ• ๋‹น์„ ์ฒด์ด๋‹ํ•˜๋Š” ๊ฒƒ์€ ์ถ”์ฒœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ const, let, var ๋ช…๋ น๋ฌธ์— ๋ณ€์ˆ˜ ์ฒด์ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ข…์ข… ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๊ณ , ๊ฐ€์žฅ ๋ฐ”๊นฅ (์™ผ์ชฝ) ๋ณ€์ˆ˜๋งŒ ์„ ์–ธ๋˜๋ฉฐ ๋‚˜๋จธ์ง€๋Š” const/let/var๊ฐ€ ์„ ์–ธํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด,

js
let z = (y = x = f());

์œ„ ๋ช…๋ น๋ฌธ์€ ์–ผํ• ๋ดค์„ ๋• x, y, z ์„ธ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ๋ชจ์Šต์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‚ฌ์‹ค ์œ„ ์ฝ”๋“œ๋Š” ๋ณ€์ˆ˜ z๋งŒ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€ ๋‘ y์™€ x๋Š” ([์—„๊ฒฉ ๋ชจ๋“œ][/ko/docs/web/javascript/reference/strict_mode]์—์„ ) ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜๋ฅผ ํ–ฅํ•˜๋Š” ์œ ํšจํ•˜์ง€ ์•Š์€ ์ฐธ์กฐ๊ฑฐ๋‚˜, ์‹ฌ์ง€์–ด (๋А์Šจํ•œ ๋ชจ๋“œ์—์„ ) x์™€ y๋ฅผ ์•”๋ฌต์ ์ธ [์ „์—ญ ๋ณ€์ˆ˜][/ko/docs/glossary/global_variable]๋กœ ์„ ์–ธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค

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

๋น„๊ต ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์„œ๋กœ ๋น„๊ตํ•˜๊ณ , ๋น„๊ต ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ์ธ์ง€์— ๋”ฐ๋ผ ๋…ผ๋ฆฌ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ”ผ์—ฐ์‚ฐ์ž๋กœ๋Š” ์ˆซ์ž, ๋ฌธ์ž์—ด, ๋…ผ๋ฆฌํ˜•, ๊ฐ์ฒด ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด์€ Unicode ๊ฐ’์„ ์‚ฌ์šฉํ•œ ํ‘œ์ค€ ์‚ฌ์ „์‹ ์ˆœ์„œ์— ๋”ฐ๋ผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ํƒ€์ž…์ด๋ฉด, JavaScript๋Š” ํ”ผ์—ฐ์‚ฐ์ž๋“ค์„ ์„œ๋กœ ๋น„๊ตํ•˜๊ธฐ์— ์ ํ•ฉํ•œ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋™์ž‘์€ ๋Œ€๊ฐœ ๋‘ ๊ฐ’์„ ๋ชจ๋‘ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ๋น„๊ตํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋‚ณ์Šต๋‹ˆ๋‹ค. ๋น„๊ต ์—ฐ์‚ฐ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ํƒ€์ž… ๋ณ€ํ™˜์˜ ์œ ์ผํ•œ ์˜ˆ์™ธ๋Š” ===๊ณผ !== ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด ์—„๊ฒฉ ์ผ์น˜์™€ ๋ถˆ์ผ์น˜ ๋น„๊ต๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ์ธ๋ฐ, ๋‘ ์—ฐ์‚ฐ์ž๋Š” ๋น„๊ต ์ „์— ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ํ‘œ๋Š” ๋‹ค์Œ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ๊ฐ์˜ ๋น„๊ต ์—ฐ์‚ฐ์ž๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

js
const var1 = 3;
const var2 = 4;
๋น„๊ต ์—ฐ์‚ฐ์ž
์—ฐ์‚ฐ์ž ์„ค๋ช… true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์˜ˆ์ œ
๋™๋“ฑ (==) ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์„œ๋กœ ๊ฐ™์œผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. 3 == var1

"3" == var1

3 == '3'
๋ถ€๋“ฑ (!=) ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅด๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. var1 != 4
var2 != "3"
์ผ์น˜ (===) ๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’๊ณผ ํƒ€์ž…์ด ๋ชจ๋‘ ๊ฐ™์€ ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Object.is์™€ JavaScript์—์„œ์˜ ๊ฐ™์Œ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”. 3 === var1
๋ถˆ์ผ์น˜ (!==) ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’ ๋˜๋Š” ํƒ€์ž…์ด ์„œ๋กœ ๋‹ค๋ฅผ ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. var1 !== "3"
3 !== '3'
ํผ (>) ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋ณด๋‹ค ํฌ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. var2 > var1
"12" > 2
ํฌ๊ฑฐ๋‚˜ ๊ฐ™์Œ (>=) ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์™€ ๊ฐ™๊ฑฐ๋‚˜ ํฌ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. var2 >= var1
var1 >= 3
์ž‘์Œ (<) ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋ณด๋‹ค ์ž‘์œผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. var1 < var2
"2" < 12
์ž‘๊ฑฐ๋‚˜ ๊ฐ™์Œ (<=) ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์™€ ๊ฐ™๊ฑฐ๋‚˜ ์ž‘์œผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

var1 <= var2
var2 <= 5

์ฐธ๊ณ : =>๋Š” ์—ฐ์‚ฐ์ž๊ฐ€ ์•„๋‹ˆ๋ผ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์˜ ํ‘œ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž

์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž๋Š” ๋‘ ๊ฐœ์˜ ์ˆซ์ž ๊ฐ’(๋ฆฌํ„ฐ๋Ÿด ๋˜๋Š” ๋ณ€์ˆ˜)์„ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ๋ฐ›์•„์„œ ํ•˜๋‚˜์˜ ์ˆซ์ž ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ‘œ์ค€ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž๋Š” ๋”ํ•˜๊ธฐ(+), ๋นผ๊ธฐ(-), ๊ณฑํ•˜๊ธฐ(*), ๋‚˜๋ˆ„๊ธฐ(/)์ž…๋‹ˆ๋‹ค. ์ด ์—ฐ์‚ฐ์ž๋“ค์€ ๋Œ€๋ถ€๋ถ„์˜ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ๋ถ€๋™์†Œ์ˆ˜์  ๊ฐ’์„ ์—ฐ์‚ฐํ•  ๋•Œ์™€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. (0 ์œผ๋กœ ๋‚˜๋ˆŒ ๊ฒฝ์šฐ Infinity๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์— ์ฃผ์˜ํ•˜์„ธ์š”) ์˜ˆ๋ฅผ ๋“ค์–ด,

js
1 / 2; // 0.5
1 / 2 == 1.0 / 2.0; // ์ฐธ

JavaScript๋Š” ํ‘œ์ค€ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž(+, -, *, /) ์™ธ์—๋„ ์•„๋ž˜์˜ ํ‘œ์— ๋‚˜์—ด๋œ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž
์—ฐ์‚ฐ์ž ์„ค๋ช… ์˜ˆ์ œ
๋‚˜๋จธ์ง€ (%) ์ดํ•ญ ์—ฐ์‚ฐ์ž์ž…๋‹ˆ๋‹ค. ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋‚˜๋ˆด์„ ๋•Œ์˜ ๋‚˜๋จธ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. 12 % 5 ๋Š” 2๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์ฆ๊ฐ€ (++) ๋‹จํ•ญ ์—ฐ์‚ฐ์ž์ž…๋‹ˆ๋‹ค. ํ”ผ์—ฐ์‚ฐ์ž์— 1์„ ๋”ํ•ฉ๋‹ˆ๋‹ค. ์ „์œ„ ์—ฐ์‚ฐ์ž(++x)๋กœ ์‚ฌ์šฉํ•˜๋ฉด ํ”ผ์—ฐ์‚ฐ์ž์— 1์„ ๋”ํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ›„์œ„ ์—ฐ์‚ฐ์ž(x++)๋กœ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ํ”ผ์—ฐ์‚ฐ์ž์— 1์„ ๋”ํ•˜๊ธฐ ์ „์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. x๊ฐ€ 3์ผ ๋•Œ, ++x๋Š” x์— 4๋ฅผ ํ• ๋‹นํ•œ ํ›„ 4๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด x++๋Š” 3์„ ๋จผ์ € ๋ฐ˜ํ™˜ํ•œ ํ›„ x์— 4๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
๊ฐ์†Œ (--) ๋‹จํ•ญ ์—ฐ์‚ฐ์ž์ž…๋‹ˆ๋‹ค. ํ”ผ์—ฐ์‚ฐ์ž์—์„œ 1์„ ๋บ๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜ ๊ฐ’์€ ์ฆ๊ฐ€ ์—ฐ์‚ฐ์ž์ฒ˜๋Ÿผ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. x๊ฐ€ 3์ผ ๋•Œ, --x๋Š” x์— 2๋ฅผ ํ• ๋‹นํ•œ ํ›„ 2๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด x--๋Š” 3์„ ๋จผ์ € ๋ฐ˜ํ™˜ํ•œ ํ›„ x์— 2๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
๋‹จํ•ญ ๋ถ€์ • (-) ๋‹จํ•ญ ์—ฐ์‚ฐ์ž์ž…๋‹ˆ๋‹ค. ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋ถ€ํ˜ธ๋ฅผ ๋ฐ˜๋Œ€๋กœ ๋ฐ”๊พผ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. x๊ฐ€ 3์ผ ๋•Œ, -x๋Š” -3์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋‹จํ•ญ ํ”Œ๋Ÿฌ์Šค (+) ๋‹จํ•ญ ์—ฐ์‚ฐ์ž์ž…๋‹ˆ๋‹ค. ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์ˆซ์ž ํƒ€์ž…์ด ์•„๋‹ˆ๋ฉด ์ˆซ์ž๋กœ ๋ณ€ํ™˜์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. +"3"์€ 3์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
+true๋Š” 1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๊ฑฐ๋“ญ์ œ๊ณฑ (**) base^exponent, ์ฆ‰ base๋ฅผ exponent๋กœ ๊ฑฐ๋“ญ์ œ๊ณฑํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. 2 ** 3์€ 8์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
10 ** -1์€ 0.1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋น„ํŠธ ์—ฐ์‚ฐ์ž

๋น„ํŠธ ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ 10์ง„์ˆ˜, 16์ง„์ˆ˜, 8์ง„์ˆ˜ ์ˆซ์ž๋กœ ์ทจ๊ธ‰ํ•˜์ง€ ์•Š๊ณ , ๋Œ€์‹  32๊ฐœ ๋น„ํŠธ์˜ ์ง‘ํ•ฉ์œผ๋กœ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 10์ง„์ˆ˜ 9๋Š” 2์ง„์ˆ˜ 1001๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋น„ํŠธ ์—ฐ์‚ฐ์ž๋Š” ์ด๋Ÿฌํ•œ ์ด์ง„๋ฒ• ํ‘œํ˜„์— ๋Œ€ํ•ด ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ, ๋ฐ˜ํ™˜ํ•  ๋• JavaScript ํ‘œ์ค€ ์ˆซ์ž๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜์˜ ํ‘œ์—์„œ JavaScript ๋น„ํŠธ ์—ฐ์‚ฐ์ž์˜ ์š”์•ฝ๋ณธ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฐ์‚ฐ์ž ์‚ฌ์šฉ๋ฒ• ์„ค๋ช…
๋น„ํŠธ AND a & b ๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ ์ž๋ฆฌ ๋น„ํŠธ์˜ ๊ฐ’์ด ๋ชจ๋‘ 1์ธ ์œ„์น˜์— 1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋น„ํŠธ OR a | b ๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ ์ž๋ฆฌ ๋น„ํŠธ์˜ ๊ฐ’์ด ๋ชจ๋‘ 0์ธ ์œ„์น˜์— 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋น„ํŠธ XOR a ^ b ๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ ์ž๋ฆฌ ๋น„ํŠธ์˜ ๊ฐ’์ด ์„œ๋กœ ๊ฐ™์€ ์œ„์น˜์— 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. [๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ ์ž๋ฆฌ ๋น„ํŠธ์˜ ๊ฐ’์ด ์„œ๋กœ ๋‹ค๋ฅธ ์œ„์น˜์— 1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.]
๋น„ํŠธ NOT ~ a ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ ์ž๋ฆฌ์˜ ๋น„ํŠธ๋ฅผ ๋’ค์ง‘์Šต๋‹ˆ๋‹ค.
์™ผ์ชฝ ์‹œํ”„ํŠธ a << b a์˜ ์ด์ง„ ํ‘œํ˜„์„ b๋งŒํผ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๊ณ , ์˜ค๋ฅธ์ชฝ์€ 0์œผ๋กœ ์ฑ„์›๋‹ˆ๋‹ค.
์˜ค๋ฅธ์ชฝ ์‹œํ”„ํŠธ a >> b a์˜ ์ด์ง„ ํ‘œํ˜„์„ b๋งŒํผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๊ณ , 1 ๋ฏธ๋งŒ์œผ๋กœ ์ด๋™ํ•œ ๋น„ํŠธ๋Š” ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค.
๋ถ€ํ˜ธ ์—†๋Š” ์˜ค๋ฅธ์ชฝ ์‹œํ”„ํŠธ a >>> b a์˜ ์ด์ง„ ํ‘œํ˜„์„ b๋งŒํผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๊ณ , 1 ๋ฏธ๋งŒ์œผ๋กœ ์ด๋™ํ•œ ๋น„ํŠธ๋Š” ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. ์™ผ์ชฝ์€ 0์œผ๋กœ ์ฑ„์›๋‹ˆ๋‹ค.

๋น„ํŠธ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž

๊ฐœ๋…์ ์œผ๋กœ, ๋น„ํŠธ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

  • ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ 32๋น„ํŠธ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๋น„ํŠธ(0 ๊ณผ 1)์˜ ์—ฐ์†์œผ๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๊ฐ€ 32๋น„ํŠธ๋ฅผ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ๊ฐ€์žฅ ํฐ ๋น„ํŠธ๋ถ€ํ„ฐ ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ 32๋น„ํŠธ๊ฐ€ ๋„˜๋Š” ์ •์ˆ˜์˜ ๋ณ€ํ™˜ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

    ์ „: 1110 0110 1111 1010 0000 0000 0000 0110 0000 0000 0001
    ํ›„:                1010 0000 0000 0000 0110 0000 0000 0001
    
  • ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ ๋น„ํŠธ์™€ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ ๋น„ํŠธ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์Œ์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ฆ‰, ์ฒซ ๋น„ํŠธ๋Š” ์ฒซ ๋น„ํŠธ์™€, ๋‘ ๋ฒˆ์งธ ๋น„ํŠธ๋Š” ๋‘ ๋ฒˆ์งธ ๋น„ํŠธ์™€, ... 32๋ฒˆ์งธ ๋น„ํŠธ๋Š” 32๋ฒˆ์งธ ๋น„ํŠธ์™€ ์ง์„ ์ง“์Šต๋‹ˆ๋‹ค.

  • ์—ฐ์‚ฐ์ž๋ฅผ ๊ฐ๊ฐ์˜ ๋น„ํŠธ ์Œ์— ๋Œ€ํ•ด ์ ์šฉํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋น„ํŠธ ๋‹จ์œ„๋กœ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, 9์˜ ์ด์ง„ ํ‘œํ˜„์€ 1001์ด๊ณ , 15์˜ ์ด์ง„ ํ‘œํ˜„์€ 1111์ž…๋‹ˆ๋‹ค. ๋น„ํŠธ ์—ฐ์‚ฐ์ž๋ฅผ ์ด ๋‘ ๊ฐ’์— ์ ์šฉํ–ˆ์„ ๋•Œ์˜ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ‘œํ˜„์‹ ๊ฒฐ๊ณผ ์ด์ง„๋ฒ• ์„ค๋ช…
15 & 9 9 1111 & 1001 = 1001
15 | 9 15 1111 | 1001 = 1111
15 ^ 9 6 1111 ^ 1001 = 0110
~15 -16 ~ 0000 0000 ... 0000 1111 = 1111 1111 ... 1111 0000
~9 -10 ~ 0000 0000 ... 0000 1001 = 1111 1111 ... 1111 0110

์ฐธ๊ณ ๋กœ, ๋น„ํŠธ NOT ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด 32๊ฐœ์˜ ๋น„ํŠธ๋ฅผ ๋ชจ๋‘ ๋ฐ˜์ „ํ•˜๋Š”๋ฐ, ๊ฐ€์žฅ ํฐ (๋งจ ์™ผ์ชฝ) ๋น„ํŠธ๊ฐ€ 1์ด๋ฉด ์Œ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค(2์˜ ๋ณด์ˆ˜ ํ‘œํ˜„๋ฒ•). ~x๋Š” -x - 1๊ณผ ๊ฐ™์€ ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.

๋น„ํŠธ ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์ž

๋น„ํŠธ ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์ž๋Š” ์‹œํ”„ํŠธ๋ฅผ ์ ์šฉํ•  ๊ฐ’๊ณผ, ์‹œํ”„ํŠธํ•  ์ž๋ฆฟ์ˆ˜๋ฅผ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์‹œํ”„ํŠธ ๋ฐฉํ–ฅ์€ ์‚ฌ์šฉํ•˜๋Š” ์—ฐ์‚ฐ์ž์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

์‹œํ”„ํŠธ ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ 32๋น„ํŠธ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ๊ฒฐ๊ณผ ๊ฐ’์„ Number๋‚˜ BigInt๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ •ํ™•ํžˆ๋Š”, ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ BigInt๋ฉด BigInt๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ ์™ธ์—๋Š” Number๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜์˜ ํ‘œ์—์„œ ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์ž์˜ ์ข…๋ฅ˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„ํŠธ ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์ž
์—ฐ์‚ฐ์ž ์„ค๋ช… ์˜ˆ์ œ
์™ผ์ชฝ ์‹œํ”„ํŠธ (<<) ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋งŒํผ ์™ผ์ชฝ์œผ๋กœ ์‹œํ”„ํŠธํ•ฉ๋‹ˆ๋‹ค. ์™ผ์ชฝ์œผ๋กœ ๋„˜์น˜๋Š” ๋น„ํŠธ๋Š” ๋ฒ„๋ฆฌ๊ณ , ์˜ค๋ฅธ์ชฝ์„ 0์œผ๋กœ ์ฑ„์›๋‹ˆ๋‹ค. 9<<2๋Š”, 1001์„ ์™ผ์ชฝ์œผ๋กœ 2๋ฒˆ ์‹œํ”„ํŠธํ•˜๋ฉด 100100์ด๋ฏ€๋กœ 36์ž…๋‹ˆ๋‹ค.
์˜ค๋ฅธ์ชฝ ์‹œํ”„ํŠธ (>>) ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋งŒํผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์‹œํ”„ํŠธํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋„˜์น˜๋Š” ๋น„ํŠธ๋Š” ๋ฒ„๋ฆฌ๊ณ , ์™ผ์ชฝ์€ ์ œ์ผ ํฐ ๋น„ํŠธ์˜ ๊ฐ’์œผ๋กœ ์ฑ„์›๋‹ˆ๋‹ค. 9>>2๋Š”, 1001์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ 2๋ฒˆ ์‹œํ”„ํŠธํ•˜๋ฉด 10์ด๋ฏ€๋กœ 2์ž…๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ -9>>2๋Š”, ๋ถ€ํ˜ธ๋ฅผ ์œ ์ง€ํ•˜๋ฏ€๋กœ -3์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋ถ€ํ˜ธ ์—†๋Š” ์˜ค๋ฅธ์ชฝ ์‹œํ”„ํŠธ (>>>) ์™ผ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž๋งŒํผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์‹œํ”„ํŠธํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋„˜์น˜๋Š” ๋น„ํŠธ๋Š” ๋ฒ„๋ฆฌ๊ณ , ์™ผ์ชฝ์€ 0์œผ๋กœ ์ฑ„์›๋‹ˆ๋‹ค. 19>>>2๋Š”, 10011์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ 2๋ฒˆ ์‹œํ”„ํŠธํ•˜๋ฉด 100์ด๋ฏ€๋กœ 4์ž…๋‹ˆ๋‹ค. ์–‘์˜ ์ˆ˜์— ๋Œ€ํ•ด์„œ๋Š” ์˜ค๋ฅธ์ชฝ ์‹œํ”„ํŠธ์™€ ๋ถ€ํ˜ธ ์—†๋Š” ์˜ค๋ฅธ์ชฝ ์‹œํ”„ํŠธ ๋‘˜ ๋‹ค ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

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

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋Š” ๋ณดํ†ต ๋ถˆ๋ฆฌ์–ธ(๋…ผ๋ฆฌ) ๊ฐ’๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์„œ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ &&์™€ || ์—ฐ์‚ฐ์ž๋Š” ์‚ฌ์‹ค ๋‘ ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ๋งŒ์•ฝ ๋‘˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์ด ์•„๋‹ˆ๋ผ๋ฉด ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž์˜ ๋ฐ˜ํ™˜ ๊ฐ’๋„ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์ด ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ํ‘œ์—์„œ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž์˜ ์„ค๋ช…์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž
์—ฐ์‚ฐ์ž ์‚ฌ์šฉ๋ฒ• ์„ค๋ช…
๋…ผ๋ฆฌ AND (&&) expr1 && expr2 expr1์„ false๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด expr1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ์—๋Š” expr2๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ, ๋‘˜ ๋‹ค ์ฐธ์ผ ๋•Œ true๋ฅผ, ๊ทธ ์™ธ์—๋Š” false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋…ผ๋ฆฌ OR (||) expr1 || expr2 expr1์„ true๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด expr1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ์—๋Š” expr2๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ, ๋‘˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ฐธ์ผ ๋•Œ true๋ฅผ, ๊ทธ ์™ธ์—๋Š” false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋…ผ๋ฆฌ NOT (!) !expr ๋‹จ์ผ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ true๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์™ธ์—๋Š” true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

false๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œํ˜„์‹์€ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๊ฐ€ null, 0, NaN, ๋นˆ ๋ฌธ์ž์—ด(""), undefined์ธ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ ์ฝ”๋“œ๋Š” && (๋…ผ๋ฆฌ AND) ์—ฐ์‚ฐ์ž์˜ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

js
var a1 = true && true; // t && t๋Š” true ๋ฐ˜ํ™˜
var a2 = true && false; // t && f๋Š” false ๋ฐ˜ํ™˜
var a3 = false && true; // f && t๋Š” false ๋ฐ˜ํ™˜
var a4 = false && 3 == 4; // f && f๋Š” false ๋ฐ˜ํ™˜
var a5 = "Cat" && "Dog"; // t && t๋Š” Dog ๋ฐ˜ํ™˜
var a6 = false && "Cat"; // f && t๋Š” false ๋ฐ˜ํ™˜
var a7 = "Cat" && false; // t && f๋Š” false ๋ฐ˜ํ™˜

๋‹ค์Œ ์ฝ”๋“œ๋Š” || (๋…ผ๋ฆฌ OR) ์—ฐ์‚ฐ์ž์˜ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

js
var o1 = true || true; // t || t๋Š” true ๋ฐ˜ํ™˜
var o2 = false || true; // f || t๋Š” true ๋ฐ˜ํ™˜
var o3 = true || false; // t || f๋Š” true ๋ฐ˜ํ™˜
var o4 = false || 3 == 4; // f || f๋Š” false ๋ฐ˜ํ™˜
var o5 = "Cat" || "Dog"; // t || t๋Š” Cat ๋ฐ˜ํ™˜
var o6 = false || "Cat"; // f || t๋Š” Cat ๋ฐ˜ํ™˜
var o7 = "Cat" || false; // t || f๋Š” Cat ๋ฐ˜ํ™˜

๋‹ค์Œ ์ฝ”๋“œ๋Š” ! (๋…ผ๋ฆฌ NOT) ์—ฐ์‚ฐ์ž์˜ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

js
var n1 = !true; // !t๋Š” false ๋ฐ˜ํ™˜
var n2 = !false; // !f๋Š” true ๋ฐ˜ํ™˜
var n3 = !"Cat"; // !t๋Š” false ๋ฐ˜ํ™˜

๋‹จ๋ฝ ํ‰๊ฐ€

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋Š” ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์˜ ์ˆœ์„œ๋กœ ํ‰๊ฐ€ํ•˜๋ฏ€๋กœ, ๋‹ค์Œ ๊ทœ์น™์„ ์‚ฌ์šฉํ•ด์„œ "๋‹จ๋ฝ"(short-circuit) ํ‰๊ฐ€๊ฐ€ ๊ฐ€๋Šฅํ•œ์ง€ ํŒ๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

  • false && ์•„๋ฌด๊ฑฐ๋‚˜๋Š” ๊ฑฐ์ง“์œผ๋กœ ๋‹จ๋ฝ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • true || ์•„๋ฌด๊ฑฐ๋‚˜๋Š” ์ฐธ์œผ๋กœ ๋‹จ๋ฝ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋…ผ๋ฆฌ ๊ทœ์น™์€ ์œ„์˜ ๋‹จ๋ฝ ํ‰๊ฐ€๊ฐ€ ํ•ญ์ƒ ์˜ณ์Œ์„ ๋ณด์ฆํ•ฉ๋‹ˆ๋‹ค. ์•„๋ฌด๊ฑฐ๋‚˜ ๋ถ€๋ถ„์˜ ํ‘œํ˜„์‹์€ ํ‰๊ฐ€๋„ ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ํ•ด๋‹น ํ‘œํ˜„์‹์—์„œ ์œ ๋ฐœํ•˜๊ฒŒ ๋˜๋Š” ๋ถ€์ˆ˜ ํšจ๊ณผ๋„ ์ „ํ˜€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ์— ์ฃผ์˜ํ•˜์„ธ์š”.

์ฐธ๊ณ ๋กœ ||์„ ์‚ฌ์šฉํ•œ ๋‘ ๋ฒˆ์งธ ๋‹จ๋ฝ ํ‰๊ฐ€์˜ ๊ฒฝ์šฐ, ์ตœ๊ทผ ์ฝ”๋“œ์—์„œ๋Š” ์ƒˆ๋กœ์šด ๋„ ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž (??)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„ ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž๋Š” ์ฒซ ๋ฒˆ์งธ ์—ฐ์‚ฐ์ž๊ฐ€ "๋„๊ณผ ์œ ์‚ฌ"ํ•œ, ์ฆ‰ null์ด๊ฑฐ๋‚˜ undefined์ผ ๋•Œ๋งŒ ๋‘ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ''์™€ 0๋„ ์œ ํšจํ•œ ๊ฐ’์ด๋ผ๋ฉด ๋„ ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž๊ฐ€ ๊ธฐ๋ณธ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ผ ๋•Œ ๋” ์ข‹์€ ์„ ํƒ์ง€์ž…๋‹ˆ๋‹ค.

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

๋ฌธ์ž์—ด์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋น„๊ต ์—ฐ์‚ฐ์ž๋“ค ์™ธ์—๋„, ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ(+) ์—ฐ์‚ฐ์ž๋Š” ๋‘ ๋ฌธ์ž์—ด์˜ ๊ฐ’์„ ์„œ๋กœ ์—ฐ๊ฒฐํ•œ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด,

js
console.log("๋‚˜๋งŒ์˜ " + "๋ฌธ์ž์—ด"); // ์ฝ˜์†”์— "๋‚˜๋งŒ์˜ ๋ฌธ์ž์—ด"์„ ๊ธฐ๋ก

๋‹จ์ถ• ํ• ๋‹น ์—ฐ์‚ฐ์ž์ธ += ๋˜ํ•œ ๋ฌธ์ž์—ด์„ ์—ฐ๊ฒฐ๊ฒฐํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด,

js
var mystring = "ํ•œ";
mystring += "๊ธ€"; // "ํ•œ๊ธ€"๋กœ ํ‰๊ฐ€๋˜๋ฉฐ, mystring์— "ํ•œ๊ธ€"์„ ํ• ๋‹นํ•จ

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

์กฐ๊ฑด ์—ฐ์‚ฐ์ž๋Š” JavaScript์—์„œ ์„ธ ๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋ฐ›๋Š” ์œ ์ผํ•œ ์—ฐ์‚ฐ์ž์ž…๋‹ˆ๋‹ค. ์กฐ๊ฑด ์—ฐ์‚ฐ์ž๋Š” ์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‘ ๊ฐ’ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ๊ตฌ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

js
condition ? val1 : val2;

๋งŒ์•ฝ condition์ด ์ฐธ์ด๋ผ๋ฉด, ์กฐ๊ฑด ์—ฐ์‚ฐ์ž๋Š” val1์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ๊ทธ ์™ธ์—๋Š” val2๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์ด๋ผ๋ฉด ์กฐ๊ฑด ์—ฐ์‚ฐ์ž๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—๋“ค ๋“ค์–ด,

js
var status = age >= 18 ? "์„ฑ์ธ" : "๋ฏธ์„ฑ๋…„์ž";

์œ„์˜ ๋ช…๋ น๋ฌธ์€ age๊ฐ€ 18 ์ด์ƒ์ด๋ผ๋ฉด status ๋ณ€์ˆ˜์— "์„ฑ์ธ"์„ ํ• ๋‹นํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด "๋ฏธ์„ฑ๋…„์ž"๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

์‰ผํ‘œ ์—ฐ์‚ฐ์ž

์‰ผํ‘œ ์—ฐ์‚ฐ์ž(,)๋Š” ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋ชจ๋‘ ํ‰๊ฐ€ํ•œ ํ›„ ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์‰ผํ‘œ ์—ฐ์‚ฐ์ž๋Š” ์ฃผ๋กœ for ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ ์‚ฌ์šฉํ•˜์—ฌ ํ•œ ๋ฒˆ์˜ ๋ฐ˜๋ณต์œผ๋กœ ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ผญ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๋ฉด, ๊ทธ ์™ธ์˜ ์ƒํ™ฉ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š์€ ์ฝ”๋“œ ์Šคํƒ€์ผ๋กœ ์—ฌ๊ฒจ์ง‘๋‹ˆ๋‹ค. ๋Œ€๊ฐœ ์‰ผํ‘œ ์—ฐ์‚ฐ์ž๋ณด๋‹ค๋Š” ๋‘ ๊ฐœ์˜ ๋ถ„๋ฆฌ๋œ ๋ช…๋ น๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ํŽธ์ด ๋‚ซ์Šต๋‹ˆ๋‹ค.

์‰ผํ‘œ ์—ฐ์‚ฐ์ž์˜ ์˜ˆ์ œ๋กœ, 10ํ–‰ 10์—ด์˜ 2์ฐจ์› ๋ฐฐ์—ด a๋ฅผ ๊ฐ€์ •ํ•  ๋•Œ, ์•„๋ž˜์˜ ์ฝ”๋“œ๋Š” ์‰ผํ‘œ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋‘ ๊ฐœ์˜ ๋ณ€์ˆ˜๋ฅผ ํ•œ๋ฒˆ์— ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ชจ์Šต์„ ๋ณด์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” a์˜ ์š”์†Œ๋ฅผ ๋Œ€๊ฐ์„ ((0, 0), (1, 1), (2, 2), ...)์œผ๋กœ ์ถœ๋ ฅํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

js
var x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
var a = [x, x, x, x, x];

for (var i = 0, j = 9; i <= j; i++, j--);
//                                  ^
console.log("a[" + i + "][" + j + "]= " + a[i][j]);

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

๋‹จํ•ญ ์—ฐ์‚ฐ์€ ์˜ค์ง ํ•˜๋‚˜์˜ ํ”ผ์—ฐ์‚ฐ์ž๋งŒ ์‚ฌ์šฉํ•˜๋Š” ์—ฐ์‚ฐ์ž…๋‹ˆ๋‹ค.

delete

delete์—ฐ์‚ฐ์ž๋Š” ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

js
delete object.property;
delete object[propertyKey];
delete objectName[index];

์œ„์˜ ๊ตฌ๋ฌธ์—์„œ, objectName์€ ๊ฐ์ฒด์˜ ์ด๋ฆ„์ด๊ณ , property๋Š” ๊ฐ์ฒด์— ์กด์žฌํ•˜๋Š” ์†์„ฑ, propertyKey๋Š” ์กด์žฌํ•˜๋Š” ์†์„ฑ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฌธ์ž์—ด์ด๋‚˜ ์‹ฌ๋ณผ์ž…๋‹ˆ๋‹ค.

delete ์—ฐ์‚ฐ์ž๊ฐ€ ์†์„ฑ์„ ์„ฑ๊ณต์ ์œผ๋กœ ์‚ญ์ œํ•œ ์ดํ›„, ํ•ด๋‹น ์†์„ฑ์„ ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜๋ฉด undefined๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. delete๋Š” ์†์„ฑ์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์ œ๊ฑฐํ•  ์ˆ˜ ์—†์„ ๋• false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

js
delete Math.PI; // false ๋ฐ˜ํ™˜ (์„ค์ • ๋ถˆ๊ฐ€ํ•œ ์†์„ฑ ์‚ญ์ œ ๋ถˆ๊ฐ€)

const myObj = { h: 4 };
delete myobj.h; // true ๋ฐ˜ํ™˜ (์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ ์‚ญ์ œ ๊ฐ€๋Šฅ)
๋ฐฐ์—ด์˜ ์›์†Œ ์‚ญ์ œํ•˜๊ธฐ

๋ฐฐ์—ด๋„ ํ‰๋ฒ”ํ•œ ๊ฐ์ฒด์ด๋ฏ€๋กœ, ๊ธฐ์ˆ ์ ์œผ๋กœ๋Š” delete๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋ฏ€๋กœ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด์˜ ์†์„ฑ์„ ์ œ๊ฑฐํ•ด๋„ ๋ฐฐ์—ด ๊ธธ์ด ์†์„ฑ์€ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์œผ๋ฉฐ, ๋‹ค๋ฅธ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋„ ๊ทธ๋Œ€๋กœ ๋‚จ์•„์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋™์ž‘์„ ์›ํ•œ๋‹ค๋ฉด ๋‹จ์ˆœํžˆ ๊ฐ’์„ undefined๋กœ ๋ฎ์–ด์“ฐ๋Š” ํŽธ์ด ํ›จ์”ฌ ๋‚ซ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋ฐฐ์—ด์„ ๋ณ€ํ˜•ํ•˜๊ณ ์ž ํ•˜๋ฉด splice์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋ฐฐ์—ด ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

typeof

typeof ์—ฐ์‚ฐ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

js
typeof operand;
typeof (operand);

typeof ์—ฐ์‚ฐ์ž๋Š” ํ‰๊ฐ€ ์ „์˜ ํ”ผ์—ฐ์‚ฐ์ž ํƒ€์ž…์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. operand๋Š” ๋ฌธ์ž์—ด, ๋ณ€์ˆ˜, ํ‚ค์›Œ๋“œ, ๊ฐ์ฒด ๋“ฑ ํƒ€์ž…์„ ์•Œ์•„๋‚ผ ๊ฐ’์ž…๋‹ˆ๋‹ค. ์ฃผ์œ„์˜ ๊ด„ํ˜ธ๋Š” ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

js
var myFun = new Function("5 + 2");
var shape = "round";
var size = 1;
var foo = ["Apple", "Mango", "Orange"];
var today = new Date();

typeof ์—ฐ์‚ฐ์ž๋Š” ์œ„์˜ ๋ณ€์ˆ˜๋“ค์— ๋Œ€ํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

js
typeof myFun; // "function" ๋ฐ˜ํ™˜
typeof shape; // "string" ๋ฐ˜ํ™˜
typeof size; // "number" ๋ฐ˜ํ™˜
typeof foo; // "object" ๋ฐ˜ํ™˜
typeof today; // "object" ๋ฐ˜ํ™˜
typeof dontExist; // "undefined" ๋ฐ˜ํ™˜

ํ‚ค์›Œ๋“œ true์™€ null์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

js
typeof true; // "boolean" ๋ฐ˜ํ™˜
typeof null; // "object" ๋ฐ˜ํ™˜

์ˆซ์ž์™€ ๋ฌธ์ž์—ด์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

js
typeof 62; // "number" ๋ฐ˜ํ™˜
typeof "Hello world"; // "string" ๋ฐ˜ํ™˜

๊ฐ์ฒด์˜ ์†์„ฑ์— ์‚ฌ์šฉํ•˜๋ฉด ์†์„ฑ์ด ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฐ’์˜ ํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

js
typeof document.lastModified; // "string" ๋ฐ˜ํ™˜
typeof window.length; // "number" ๋ฐ˜ํ™˜
typeof Math.LN2; // "number" ๋ฐ˜ํ™˜

๋ฉ”์„œ๋“œ์™€ ํ•จ์ˆ˜์— ๋Œ€ํ•ด์„  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

js
typeof blur; // "function" ๋ฐ˜ํ™˜
typeof eval; // "function" ๋ฐ˜ํ™˜
typeof parseInt; // "function" ๋ฐ˜ํ™˜
typeof shape.split; // "function" ๋ฐ˜ํ™˜

์‚ฌ์ „ ์ •์˜๋œ ๊ฐ์ฒด์— ๋Œ€ํ•ด์„  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

js
typeof Date; // "function" ๋ฐ˜ํ™˜
typeof Function; // "function" ๋ฐ˜ํ™˜
typeof Math; // "object" ๋ฐ˜ํ™˜
typeof Option; // "function" ๋ฐ˜ํ™˜
typeof String; // "function" ๋ฐ˜ํ™˜

void

void ์—ฐ์‚ฐ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

js
void (expression);
void expression;

void ์—ฐ์‚ฐ์ž๋Š” ํ‘œํ˜„์‹์„ ํ‰๊ฐ€ํ•  ๋•Œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋„๋ก ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. expression์€ ํ‰๊ฐ€ํ•  JavaScript ํ‘œํ˜„์‹์ž…๋‹ˆ๋‹ค. ์ฃผ์œ„ ๊ด„ํ˜ธ๋Š” ์„ ํƒ ์‚ฌํ•ญ์ด์ง€๋งŒ, ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ด€๊ณ„ ์—ฐ์‚ฐ์ž

๊ด€๊ณ„ ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์„œ๋กœ ๋น„๊ตํ•˜๊ณ , ๋น„๊ต ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ์ธ์ง€์— ๋”ฐ๋ผ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

in

in ์—ฐ์‚ฐ์ž๋Š” ์ง€์ •ํ•œ ์†์„ฑ์ด ์ง€์ •ํ•œ ๊ฐ์ฒด์— ์กด์žฌํ•  ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

js
propNameOrNumber in objectName;

propNameOrNumber๋Š” ์†์„ฑ์ด๋‚˜ ๋ฐฐ์—ด ์ธ๋ฑ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด, ์ˆซ์ž, ์‹ฌ๋ณผ ํ‘œํ˜„์‹์ด๋ฉฐ objectName์€ ๊ฐ์ฒด์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ ์ฝ”๋“œ๋Š” in ์—ฐ์‚ฐ์ž์˜ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

js
// ๋ฐฐ์—ด
var trees = ["redwood", "bay", "cedar", "oak", "maple"];
0 in trees; // true ๋ฐ˜ํ™˜
3 in trees; // true ๋ฐ˜ํ™˜
6 in trees; // false ๋ฐ˜ํ™˜
"bay" in trees; // false ๋ฐ˜ํ™˜ (์ธ๋ฑ์Šค์— ์œ„์น˜ํ•œ ๊ฐ’์ด ์•„๋‹ˆ๋ผ
// ์ธ๋ฑ์Šค ์ž์ฒด๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•จ)
"length" in trees; // true ๋ฐ˜ํ™˜ (length๋Š” Array์˜ ์†์„ฑ์ž„)

// ๋‚ด์žฅ ๊ฐ์ฒด
"PI" in Math; // true ๋ฐ˜ํ™˜
var myString = new String("coral");
"length" in myString; // true ๋ฐ˜ํ™˜

// ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด
var mycar = { make: "Honda", model: "Accord", year: 1998 };
"make" in mycar; // true ๋ฐ˜ํ™˜
"model" in mycar; // true ๋ฐ˜ํ™˜

instanceof

instanceof ์—ฐ์‚ฐ์ž๋Š” ์ง€์ •ํ•œ ๊ฐ์ฒด๊ฐ€ ์ง€์ •ํ•œ ๊ฐ์ฒด ํƒ€์ž…์— ์†ํ•˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

js
objectName instanceof objectType;

objectName์€ objectType๊ณผ ๋น„๊ตํ•  ๊ฐ์ฒด์˜ ์ด๋ฆ„์ด๊ณ , objectType์€ Date, Array์™€ ๊ฐ™์€ ๊ฐ์ฒด ํƒ€์ž…์ž…๋‹ˆ๋‹ค.

๋Ÿฐํƒ€์ž„์— ๊ฐ์ฒด์˜ ํƒ€์ž…์„ ํ™•์ธํ•  ํ•„์š”๊ฐ€ ์žˆ์œผ๋ฉด instanceof ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์˜ˆ์ปจ๋Œ€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์‹œ์—, ์žก์•„๋‚ธ ์˜ˆ์™ธ์˜ ํƒ€์ž…์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์˜ ์ฝ”๋“œ๋Š” instanceof ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ theDay ๊ฐ์ฒด๊ฐ€ Date ๊ฐ์ฒด์ธ์ง€ ์•Œ์•„๋‚ด๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. theDay ๊ฐ์ฒด๋Š” Date ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์—, if ๋ช…๋ น๋ฌธ ์•ˆ์˜ ๋‚ด์šฉ์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

js
var theDay = new Date(1995, 12, 17);
if (theDay instanceof Date) {
  // ์‹คํ–‰ํ•  ๋ช…๋ น๋ฌธ
}

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

์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„๋Š” ํ‘œํ˜„์‹์„ ํ‰๊ฐ€ํ•  ๋•Œ ์—ฐ์‚ฐ์ž๋ฅผ ์ ์šฉํ•˜๋Š” ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ํ‘œ๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ˆœ์„œ์—์„œ ๋‚ฎ์€ ์ˆœ์„œ๋กœ ์—ฐ์‚ฐ์ž๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.

์—ฐ์‚ฐ์ž ์œ ํ˜• ๊ฐœ๋ณ„ ์—ฐ์‚ฐ์ž
๋งด๋ฒ„ ์ ‘๊ทผ . []
์ธ์Šคํ„ด์Šค ํ˜ธ์ถœ/์ƒ์„ฑ () new
์ฆ๊ฐ ! ~ - + ++ -- typeof void delete
๊ฑฐ๋“ญ์ œ๊ณฑ **
๊ณฑํ•˜๊ธฐ/๋‚˜๋ˆ„๊ธฐ * / %
๋”ํ•˜๊ธฐ/๋นผ๊ธฐ + -
๋น„ํŠธ ์‹œํ”„ํŠธ << >> >>>
๊ด€๊ณ„ < <= > >= in instanceof
๋™๋“ฑ/์ผ์น˜ == != === !==
๋น„ํŠธ AND &
๋น„ํŠธ XOR ^
๋น„ํŠธ OR |
๋…ผ๋ฆฌ AND &&
๋…ผ๋ฆฌ OR ||
์กฐ๊ฑด ?:
ํ• ๋‹น = += -= **= *= /= %= <<= >>= >>>= &= ^= |= &&= ||= ??=
์‰ผํ‘œ ,

๊ฐ๊ฐ์˜ ์—ฐ์‚ฐ์ž๋กœ ํ–ฅํ•˜๋Š” ๋งํฌ๋ฅผ ํฌํ•จํ•œ ๋” ์ž์„ธํ•œ ํ‘œ๋Š” JavaScript ์ฐธ๊ณ ์„œ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ‘œํ˜„์‹

ํ‘œํ˜„์‹์ด๋ž€ ์–ด๋–ค ๊ฐ’์œผ๋กœ ์ดํ–‰ํ•˜๋Š” ์ž„์˜์˜ ์œ ํšจํ•œ ์ฝ”๋“œ ๋‹จ์œ„๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ํ‘œํ˜„์‹์€ ๊ตฌ๋ฌธ์ด ์œ ํšจํ•˜๋‹ค๋ฉด ์–ด๋–ค ๊ฐ’์œผ๋กœ ์ดํ–‰ํ•˜์ง€๋งŒ, ๊ฐœ๋…์ ์œผ๋กœ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฒ”์ฃผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ๋ถ€์ˆ˜ ํšจ๊ณผ๊ฐ€ ์žˆ๋Š” (์˜ˆ์‹œ: ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹น) ํ‘œํ˜„์‹์ด๊ณ , ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ํ‰๊ฐ€ํ•˜๋ฉด ์–ด๋–ค ๊ฐ’์œผ๋กœ ์ดํ–‰ํ•˜๋Š” ํ‘œํ˜„์‹์ž…๋‹ˆ๋‹ค.

x = 7์€ ์•ž์˜ ๋ฒ”์ฃผ์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด ํ‘œํ˜„์‹์€ = ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ’ 7์„ x ๋ณ€์ˆ˜์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ํ‘œํ˜„์‹ ์ž์ฒด๋„ 7๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.

3 + 4๋Š” ๋’ค์ชฝ ๋ฒ”์ฃผ๋กœ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ์ด ํ‘œํ˜„์‹์€ + ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ 3๊ณผ 4๋ฅผ ๋”ํ•˜์ง€๋งŒ, ๊ฒฐ๊ณผ์ธ 7์„ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

JavaScript์˜ ํ‘œํ˜„์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฒ”์ฃผ๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์‚ฐ์ˆ˜: ์ˆซ์ž, ์˜ˆ์ปจ๋Œ€ 3.14159๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌธ์ž์—ด: ๋ฌธ์ž์—ด, ์˜ˆ์ปจ๋Œ€ "ํ”„๋ ˆ๋””", "234" ๋“ฑ์œผ๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ๋ฌธ์ž์—ด ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋…ผ๋ฆฌ: ์ฐธ์ด๋‚˜ ๊ฑฐ์ง“์œผ๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๋Œ€๊ฐœ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ์ฐจ ํ‘œํ˜„์‹: JavaScript์˜ ํ‚ค์›Œ๋“œ์™€ ์ผ๋ฐ˜ ํ‘œํ˜„์‹์ž…๋‹ˆ๋‹ค.
  • ์ขŒ๋ณ€ ํ‘œํ˜„์‹: ์ขŒ๋ณ€ ๊ฐ’์€ ํ• ๋‹น์˜ ๋ชฉ์ ์ง€์ž…๋‹ˆ๋‹ค.

์ผ์ฐจ ํ‘œํ˜„์‹

JavaScript์˜ ํ‚ค์›Œ๋“œ์™€ ์ผ๋ฐ˜ ํ‘œํ˜„์‹์ž…๋‹ˆ๋‹ค.

this

ํ˜„์žฌ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋ ค๋ฉด this ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ผ๋ฐ˜์ ์œผ๋กœ this๋Š” ๋ฉ”์„œ๋“œ์˜ ํ˜ธ์ถœ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด, this๋ฅผ ์ ์ด๋‚˜ ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์„ธ์š”.

js
this["propertyName"];
this.propertyName;

์ตœ๋Œ€์™€ ์ตœ์†Œ ๊ฐ’์„ ๋ฐ›์•„์„œ, ์–ด๋–ค ๊ฐ์ฒด์˜ value ์†์„ฑ ์œ ํšจ์„ฑ์„ ๊ฒ€์ฆํ•˜๋Š” validate๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค.

js
function validate(obj, lowval, hival) {
  if (obj.value < lowval || obj.value > hival) console.log("์ž˜๋ชป๋œ ๊ฐ’!");
}

๋‹ค์Œ๊ณผ ๊ฐ™์ด, ๊ฐ ์–‘์‹ ์š”์†Œ์˜ onchange ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๊ธฐ์—์„œ validate๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ this๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์–‘์‹ ์š”์†Œ์˜ ์ฐธ์กฐ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

html
<p>18๊ณผ 99 ์‚ฌ์ด์˜ ์ˆ˜๋ฅผ ์ž…๋ ฅ:</p>
<input type="text" name="age" size="3" onchange="validate(this, 18, 99);" />

๊ทธ๋ฃน ์—ฐ์‚ฐ์ž

๊ทธ๋ฃน์—ฐ์‚ฐ์ž ()๋Š” ํ‘œํ˜„์‹ ํ‰๊ฐ€์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ณฑํ•˜๊ธฐ์™€ ๋‚˜๋ˆ„๊ธฐ๋ณด๋‹ค ๋”ํ•˜๊ธฐ์™€ ๋นผ๊ธฐ ์—ฐ์‚ฐ์„ ๋จผ์ € ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

js
var a = 1;
var b = 2;
var c = 3;

// ๊ธฐ๋ณธ ์šฐ์„ ์ˆœ์œ„์—์„œ๋Š”
a + b * c; // 7
// ์ด๋Ÿฐ ์ˆœ์„œ๋กœ ํ‰๊ฐ€ํ•จ
a + (b * c); // 7

// ์šฐ์„ ์ˆœ์œ„ ์žฌ์ •์˜
// ๊ณฑํ•˜๊ธฐ๋ณด๋‹ค ๋”ํ•˜๊ธฐ๋ฅผ ๋จผ์ € ์ˆ˜ํ–‰
(a + b) * c; // 9

// ...ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Œ
a * c + b * c; // 9

์ขŒ๋ณ€ ํ‘œํ˜„์‹

์ขŒ๋ณ€ ๊ฐ’์€ ํ• ๋‹น์˜ ๋ชฉ์ ์ง€์ž…๋‹ˆ๋‹ค.

new

new ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด ํƒ€์ž…์ด๋‚˜ ๋‚ด์žฅ ๊ฐ์ฒด ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜์„ธ์š”.

js
var objectName = new objectType([param1, param2, ..., paramN]);

super

super ํ‚ค์›Œ๋“œ๋Š” ๊ฐ์ฒด์˜ ๋ถ€๋ชจ๊ฐ€ ๊ฐ€์ง„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ํ•˜๋‚˜ ๋“ค๋ฉด, ํด๋ž˜์Šค์—์„œ ๋ถ€๋ชจ์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

js
super([arguments]); // ๋ถ€๋ชจ ์ƒ์„ฑ์ž ํ˜ธ์ถœ
super.functionOnParent([arguments]);