ํํ์๊ณผ ์ฐ์ฐ์
์ด๋ฒ ์ฅ์์๋ JavaScript์ ํํ์๊ณผ ํจ๊ป ํ ๋น, ๋น๊ต, ์ฐ์ , ๋นํธ ๊ณ์ฐ, ๋ ผ๋ฆฌ, ๋ฌธ์์ด, ์ผํญ ๋ฑ ๋ค์ํ ์ฐ์ฐ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ฐธ๊ณ ์์์ ๋ชจ๋ ์ฐ์ฐ์์ ํํ์์ ์์ธํ ๋ชฉ๋ก๋ ํ์ธํ ์ ์์ต๋๋ค.
์ฐ์ฐ์
JavaScript์ ์ฐ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ ์ ํ์ผ๋ก ๋๋ ์ ์์ต๋๋ค. ์ด ์ ์ ๊ฐ๊ฐ์ ์ฐ์ฐ์์ ๋ํด ์ค๋ช ํ๊ณ , ์ฐ์ฐ์ ์ฐ์ ์์์ ๊ดํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ํ ๋น ์ฐ์ฐ์
- ๋น๊ต ์ฐ์ฐ์
- ์ฐ์ ์ฐ์ฐ์
- ๋นํธ ์ฐ์ฐ์
- ๋ ผ๋ฆฌ ์ฐ์ฐ์
- ๋ฌธ์์ด ์ฐ์ฐ์
- ์กฐ๊ฑด (์ผํญ) ์ฐ์ฐ์
- ์ผํ ์ฐ์ฐ์
- ๋จํญ ์ฐ์ฐ์
- ๊ด๊ณ ์ฐ์ฐ์
JavaScript๋ ์ดํญ ์ฐ์ฐ์์ ๋จํญ ์ฐ์ฐ์๋ฅผ ๋ชจ๋ ํฌํจํ๋ฉฐ, ์ ์ผํ ์ผํญ ์ฐ์ฐ์๋ก ์กฐ๊ฑด ์ฐ์ฐ์๋ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ดํญ ์ฐ์ฐ์๋ ์ฐ์ฐ์์ ์๊ณผ ๋ค์ ํ๋์ฉ ์ด ๋ ๊ฐ์ ํผ์ฐ์ฐ์๊ฐ ํ์ํฉ๋๋ค.
ํผ์ฐ์ฐ์1 ์ฐ์ฐ์ ํผ์ฐ์ฐ์2
์ดํญ ์ฐ์ฐ์์ ์์๋ก๋ 3+4
์ x*y
๊ฐ ์์ต๋๋ค.
๋จํญ ์ฐ์ฐ์๋ ์ฐ์ฐ์์ ์์ด๋ ๋ค์ ํ๋์ ํผ์ฐ์ฐ์๊ฐ ํ์ํฉ๋๋ค.
์ฐ์ฐ์ ํผ์ฐ์ฐ์
๋๋
ํผ์ฐ์ฐ์ ์ฐ์ฐ์
๋จํญ ์ฐ์ฐ์์ ์์๋ก๋ 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) |
์์ฑ ํ ๋น
์ด๋ค ํํ์์ด ๊ฐ์ฒด๋ก ํ๊ฐ๋๋ค๋ฉด, ํ ๋น ํํ์์ ์ขํญ์ ๊ฐ์ฒด๋ก ํ๊ฐ๋๋ ํํ์์ ์์ฑ์ ํ ๋นํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด,
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 } ์ถ๋ ฅ.
๊ฐ์ฒด์ ๊ดํ ๋ ๋ง์ ์ ๋ณด๋ฅผ ๊ฐ์ฒด๋ก ์์ ํ๊ธฐ์์ ์ฐพ์๋ณด์ธ์.
์ด๋ค ํํ์์ด ๊ฐ์ฒด๋ก ํ๊ฐ๋์ง ์์ผ๋ฉด, ๊ทธ ํํ์์ ์์ฑ์ ๋ํ ํ ๋น ํํ์์ ์ค์ ๋ก๋ ํ ๋นํ์ง ์์ต๋๋ค.
let val = 0;
console.log((val.x = 3)); // 3 ์ถ๋ ฅ.
console.log(val.x); // undefined ์ถ๋ ฅ.
console.log(val); // 0 ์ถ๋ ฅ.
์์ ๋ถ๊ฐ๋ฅํ ์์ฑ์ด๋, ์์ฑ์ด ์๋ ํํ์(null
์ด๋ undefined
)์ผ๋ก ํ ๋น์ ์๋ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ตฌ์กฐ ๋ถํด
๊ตฌ์กฐ ๋ถํด ํ ๋น ๊ตฌ๋ฌธ์ JavaScript ํํ์ ์ค ํ๋๋ก, ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ์์ฑํ ๋์ ๋น์ทํ ๊ตฌ๋ฌธ์ผ๋ก ์ฌ์ฉํด์ ์ด๋ค ๊ฐ์ฒด๋ ๋ฐฐ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์ ์์ต๋๋ค.
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
)๊ณผ ํจ๊ป ์ฐ์ด๊ฑฐ๋ ๋
๋ฆฝ์ ์ธ ๋ช
๋ น๋ฌธ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
// ๋ณ์ x๋ฅผ ์ ์ธํด์ f()์ ๊ฒฐ๊ณผ๋ก ์ด๊ธฐํ,
// x = f() ํ ๋น ํํ์์ ๊ฒฐ๊ณผ๋ ๋ฒ๋ ค์ง.
let x = f();
// ๋ณ์ x๋ฅผ ์ ์ธํด์ g()์ ๊ฒฐ๊ณผ๋ก ์ด๊ธฐํ,
// x = g() ํ ๋น ํํ์์ ๊ฒฐ๊ณผ๋ ๋ฒ๋ ค์ง.
x = g(); // ๋ณ์ x๋ฅผ g()์ ๊ฒฐ๊ณผ๋ก ์ฌํ ๋น.
๊ทธ๋ฐ๋ฐ, ๋ค๋ฅธ ํํ์๋ค์ฒ๋ผ x = f()
์ ๊ฐ์ ํ ๋น ํํ์๋ ๊ฒฐ๊ณผ ๊ฐ์ผ๋ก ํ๊ฐ๋ฉ๋๋ค. ๋ณดํต ์ด ๊ฐ์ ์ฌ์ฉํ์ง ์์ง๋ง, ๊ทธ๋๋ ๋ค๋ฅธ ํ๊ฐ์์ ๊ฐ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค๋ ์ ์ ๋ฐ๋์ง ์์ต๋๋ค.
ํ ๋น ์ฒด์ด๋์ด๋, ๋ค๋ฅธ ํํ์์ ์ค์ฒฉ๋ ํ ๋น์ ์์ํ๊ธฐ ํ๋ ๋์์ ๋ณด์ผ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ด๋ค JavaScript ์คํ์ผ ๊ฐ์ด๋์์๋ ํ ๋น์ ์ฒด์ด๋ํ๊ฑฐ๋ ์ค์ฒฉํ๋ ๊ฑธ ์ง์ํ๋ผ ๋งํฉ๋๋ค. ์ด์จ๋ , ํ ๋น ์ฒด์ด๋๊ณผ ์ค์ฒฉ์ ๊ฐ๋ ๋ง์ฃผ์น๊ฒ ๋๋ฏ๋ก ์ด๋ป๊ฒ ๋์ํ๋์ง๋ ์์๋๋ ๊ฒ ์ข์ต๋๋ค.
ํ ๋น ํํ์์ ์ฒด์ด๋ํ๊ฑฐ๋ ์ค์ฒฉํจ์ผ๋ก์จ ํ ๋น์ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ๋ค๋ฅธ ๋ณ์์ ํ ๋นํ ์ ์์ต๋๋ค. ์๋๋ฉด ์ฝ์์ ๊ธฐ๋กํ ์๋ ์๊ณ , ๋ฐฐ์ด ๋ฆฌํฐ๋ด์ด๋ ํจ์ ํธ์ถ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
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
๊ฐ ์ ์ธ๋ ์ํฉ์ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
function f() {
console.log("F!");
return 2;
}
function g() {
console.log("G!");
return 3;
}
let x, y;
๋ค์ ์ธ ์์ ๋ฅผ ํ์ธํด ๋ณด์ธ์.
y = x = f();
y = [f(), (x = g())];
x[f()] = g();
ํ๊ฐ ์์ 1
=
์ ์ฐ์ธก ๊ฒฐํฉ์ ํ๊ธฐ ๋๋ฌธ์ y = x = f()
๋ y = (x = f())
์ ๊ฐ์ต๋๋ค. ํ์ง๋ง ํ๊ฐ๋ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ๋์๊ฐ๋ฏ๋ก,
- ํ ๋น ํํ์
y = x = f()
์ ํ๊ฐ๋ฅผ ์์ํฉ๋๋ค.- ์ด ํ ๋น์ ์ขํญ์ธ
y
๊ฐ,y
๋ผ๋ ์ด๋ฆ์ ๋ณ์ ์ฐธ์กฐ๋ก ํ๊ฐ๋ฉ๋๋ค. - ํ ๋น ํํ์
x = f()
์ ํ๊ฐ๋ฅผ ์์ํฉ๋๋ค.- ์ด ํ ๋น์ ์ขํญ์ธ
x
๊ฐ,x
๋ผ๋ ์ด๋ฆ์ ๋ณ์ ์ฐธ์กฐ๋ก ํ๊ฐ๋ฉ๋๋ค. - ํจ์ ํธ์ถ
f()
๊ฐ ์ฝ์์ "F!"๋ฅผ ๊ธฐ๋กํ ํ ์ซ์2
๋ก ํ๊ฐ๋ฉ๋๋ค. f()
์ ๊ฒฐ๊ณผ์ธ2
๋ฅผx
์ ํ ๋นํฉ๋๋ค.
- ์ด ํ ๋น์ ์ขํญ์ธ
- ํ ๋น ํํ์
x = f()
์ ํ๊ฐ๊ฐ ๋๋ฌ์ต๋๋ค. ํํ์์ ๊ฒฐ๊ณผ ๊ฐ์x
์ ์๋ก์ด ๊ฐ, ์ฆ2
์ ๋๋ค. - ์์ ๊ฒฐ๊ณผ์ธ
2
๋ฅผy
์๋ ํ ๋นํฉ๋๋ค.
- ์ด ํ ๋น์ ์ขํญ์ธ
- ํ ๋น ํํ์
y = x = f()
์ ํ๊ฐ๊ฐ ๋๋ฌ์ต๋๋ค. ํํ์์ ๊ฒฐ๊ณผ ๊ฐ์y
์ ์๋ก์ด ๊ฐ, ์ฆ2
์ ๋๋ค.x
์y
์2
๋ฅผ ํ ๋นํ๊ณ , ์ฝ์์๋ "F!"๋ฅผ ๊ธฐ๋กํ์ต๋๋ค.
ํ๊ฐ ์์ 2
y = [ f(), x = g() ]
๋ํ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ํ๊ฐํฉ๋๋ค.
- ํ ๋น ํํ์
y = [ f(), x = g() ]
์ ํ๊ฐ๋ฅผ ์์ํฉ๋๋ค.- ์ด ํ ๋น์ ์ขํญ์ธ
y
๊ฐ,y
๋ผ๋ ์ด๋ฆ์ ๋ณ์ ์ฐธ์กฐ๋ก ํ๊ฐ๋ฉ๋๋ค. - ๋ฐฐ์ด ๋ฆฌํฐ๋ด
[ f(), x = g() ]
์ ํ๊ฐ๋ฅผ ์์ํฉ๋๋ค.- ํจ์ ํธ์ถ
f()
๊ฐ ์ฝ์์ "F!"๋ฅผ ๊ธฐ๋กํ ํ ์ซ์2
๋ก ํ๊ฐ๋ฉ๋๋ค. - ํ ๋น ํํ์
x = g()
์ ํ๊ฐ๋ฅผ ์์ํฉ๋๋ค.- ์ด ํ ๋น์ ์ขํญ์ธ
x
๊ฐ,x
๋ผ๋ ์ด๋ฆ์ ๋ณ์ ์ฐธ์กฐ๋ก ํ๊ฐ๋ฉ๋๋ค. - ํจ์ ํธ์ถ
g()
๊ฐ ์ฝ์์ "G!"๋ฅผ ๊ธฐ๋กํ ํ ์ซ์3
์ผ๋ก ํ๊ฐ๋ฉ๋๋ค. g()
์ ๊ฒฐ๊ณผ์ธ3
์x
์ ํ ๋นํฉ๋๋ค.
- ์ด ํ ๋น์ ์ขํญ์ธ
- ํ ๋น ํํ์
x = g()
์ ํ๊ฐ๊ฐ ๋๋ฌ์ต๋๋ค. ํํ์์ ๊ฒฐ๊ณผ ๊ฐ์x
์ ์๋ก์ด ๊ฐ, ์ฆ3
์ ๋๋ค. ์ด ๊ฒฐ๊ณผ์ธ3
์ด ๋ฐฐ์ด ๋ฆฌํฐ๋ด์ ๋ ๋ฒ์งธ ์์๊ฐ ๋ฉ๋๋ค. (์ฒซ ๋ฒ์งธ ์์๋f()
์ ๊ฒฐ๊ณผ์ธ2
์ ๋๋ค)
- ํจ์ ํธ์ถ
- ๋ฐฐ์ด ๋ฆฌํฐ๋ด
[ f(), x = g() ]
์ ํ๊ฐ๊ฐ ๋๋ฌ์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ๋ ๋ ๊ฐ์ ์์๋ฅผ ๊ฐ์ง ๋ฐฐ์ด,[ 2, 3 ]
์ ๋๋ค. - ์์ ๊ฒฐ๊ณผ์ธ
[ 2, 3 ]
๋ฐฐ์ด์y
์ ํ ๋นํฉ๋๋ค.
- ์ด ํ ๋น์ ์ขํญ์ธ
- ํ ๋น ํํ์
y = [ f(), x = g() ]
์ ํ๊ฐ๊ฐ ๋๋ฌ์ต๋๋ค. ํํ์์ ๊ฒฐ๊ณผ ๊ฐ์y
์ ์๋ก์ด ๊ฐ, ์ฆ[ 2, 3 ]
์ ๋๋ค.x
์๋3
,y
์๋[ 2, 3 ]
์ด ํ ๋น๋๊ณ , ์ฝ์์๋ "F!" ํ์ "G!"๋ฅผ ๊ธฐ๋กํ์ต๋๋ค.
ํ๊ฐ ์์ 3
x[f()] = g()
๋ํ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ํ๊ฐํฉ๋๋ค. (์ด ์์ ๋ ์ด๋ค ๊ฐ์ฒด๊ฐ x
์ ํ ๋น๋๋ค๋ ์ถ๊ฐ ๊ฐ์ ํ์ ์งํํฉ๋๋ค. ๊ฐ์ฒด์ ๊ดํ ๋ ๋ง์ ์ ๋ณด๋ ๊ฐ์ฒด๋ก ์์
ํ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ์ธ์)
- ํ ๋น ํํ์
x[f()] = g()
์ ํ๊ฐ๋ฅผ ์์ํฉ๋๋ค.- ์ด ํ ๋น์ ์ขํญ์ธ
x[f()]
์์ฑ ์ ๊ทผ์ ํ๊ฐ๋ฅผ ์์ํฉ๋๋ค.- ์ด ์์ฑ ์ ๊ทผ์
x
๊ฐ,x
๋ผ๋ ์ด๋ฆ์ ๋ณ์ ์ฐธ์กฐ๋ก ํ๊ฐ๋ฉ๋๋ค. - ํจ์ ํธ์ถ
f()
๊ฐ ์ฝ์์ "F!"๋ฅผ ๊ธฐ๋กํ ํ ์ซ์2
๋ก ํ๊ฐ๋ฉ๋๋ค.
- ์ด ์์ฑ ์ ๊ทผ์
- ์ด ํ ๋น์ ์์ฑ ์ ๊ทผ
x[f()]
์ ํ๊ฐ๊ฐ ๋๋ฌ์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ๊ฐ์ ๋ณ์ ์์ฑ ์ฐธ์กฐx[2]
์ ๋๋ค. - ๋ค์์ผ๋ก, ํจ์ ํธ์ถ
g()
๊ฐ ์ฝ์์ "G!"๋ฅผ ๊ธฐ๋กํ ํ ์ซ์3
์ผ๋ก ํ๊ฐ๋ฉ๋๋ค. g()
์ ๊ฒฐ๊ณผ์ธ3
์x[2]
์ ํ ๋นํฉ๋๋ค. (์ด ๋จ๊ณ๋x
์ ๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ํ ๋นํ ๊ฒฝ์ฐ์๋ง ์ฑ๊ณตํฉ๋๋ค)
- ์ด ํ ๋น์ ์ขํญ์ธ
- ํ ๋น ํํ์
x[f()] = g()
์ ํ๊ฐ๊ฐ ๋๋ฌ์ต๋๋ค. ํํ์์ ๊ฒฐ๊ณผ ๊ฐ์x[2]
์ ์๋ก์ด ๊ฐ, ์ฆ3
์ ๋๋ค.x[2]
์๋3
์ด ํ ๋น๋๊ณ , ์ฝ์์๋ "F!" ํ์ "G!"๋ฅผ ๊ธฐ๋กํ์ต๋๋ค.
ํ ๋น ์ฒด์ด๋์ ํผํด์ผ ํ ์ด์
ํ ๋น ์ฒด์ด๋์ด๋, ๋ค๋ฅธ ํํ์์ ์ค์ฒฉ๋ ํ ๋น์ ์์ํ๊ธฐ ํ๋ ๋์์ ๋ณด์ผ ์ ์์ต๋๋ค. ๊ทธ๋์ ํ๋์ ๋ช ๋ น๋ฌธ ๋ด์์ ํ ๋น์ ์ฒด์ด๋ํ๋ ๊ฒ์ ์ถ์ฒํ์ง ์์ต๋๋ค.
ํนํ const
, let
, var
๋ช
๋ น๋ฌธ์ ๋ณ์ ์ฒด์ธ์ ์ฌ์ฉํ๋ฉด ์ข
์ข
์ ๋๋ก ๋์ํ์ง ์๊ณ , ๊ฐ์ฅ ๋ฐ๊นฅ (์ผ์ชฝ) ๋ณ์๋ง ์ ์ธ๋๋ฉฐ ๋๋จธ์ง๋ const
/let
/var
๊ฐ ์ ์ธํ์ง ์์ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด,
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๋ ํผ์ฐ์ฐ์๋ค์ ์๋ก ๋น๊ตํ๊ธฐ์ ์ ํฉํ ํ์
์ผ๋ก ๋ณํํฉ๋๋ค. ์ด ๋์์ ๋๊ฐ ๋ ๊ฐ์ ๋ชจ๋ ์ซ์๋ก ๋ณํํ ํ ๋น๊ตํ ๊ฒฐ๊ณผ๋ฅผ ๋ณ์ต๋๋ค. ๋น๊ต ์ฐ์ฐ์์ ๋ฐ์ํ๋ ํ์
๋ณํ์ ์ ์ผํ ์์ธ๋
===
๊ณผ !==
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด ์๊ฒฉ ์ผ์น์ ๋ถ์ผ์น ๋น๊ต๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ์ธ๋ฐ, ๋ ์ฐ์ฐ์๋
๋น๊ต ์ ์ ํผ์ฐ์ฐ์๋ฅผ ๋ณํํ์ง ์์ต๋๋ค. ์๋์ ํ๋ ๋ค์ ์์ ์ฝ๋๋ฅผ ์ฌ์ฉํด ๊ฐ๊ฐ์ ๋น๊ต ์ฐ์ฐ์๋ฅผ ์ค๋ช
ํฉ๋๋ค.
const var1 = 3;
const var2 = 4;
์ฐ์ฐ์ | ์ค๋ช | true ๋ฅผ ๋ฐํํ๋ ์์ |
---|---|---|
๋๋ฑ
(== )
|
ํผ์ฐ์ฐ์๊ฐ ์๋ก ๊ฐ์ผ๋ฉด true ๋ฅผ ๋ฐํํฉ๋๋ค. |
3 == var1
3 == '3'
|
๋ถ๋ฑ
(!= )
|
ํผ์ฐ์ฐ์๊ฐ ์๋ก ๋ค๋ฅด๋ฉด true ๋ฅผ ๋ฐํํฉ๋๋ค. |
var1 != 4
|
์ผ์น
(=== )
|
๋ ํผ์ฐ์ฐ์์ ๊ฐ๊ณผ ํ์
์ด ๋ชจ๋ ๊ฐ์ ๊ฒฝ์ฐ true ๋ฅผ ๋ฐํํฉ๋๋ค.
Object.is ์
JavaScript์์์ ๊ฐ์์ ์ฐธ๊ณ ํ์ธ์.
|
3 === var1 |
๋ถ์ผ์น
(!== )
|
ํผ์ฐ์ฐ์์ ๊ฐ ๋๋ ํ์
์ด ์๋ก ๋ค๋ฅผ ๊ฒฝ์ฐ true ๋ฅผ ๋ฐํํฉ๋๋ค.
|
var1 !== "3"
|
ํผ
(> )
|
์ผ์ชฝ ํผ์ฐ์ฐ์๊ฐ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์๋ณด๋ค ํฌ๋ฉด true ๋ฅผ ๋ฐํํฉ๋๋ค.
|
var2 > var1
|
ํฌ๊ฑฐ๋ ๊ฐ์
(>= )
|
์ผ์ชฝ ํผ์ฐ์ฐ์๊ฐ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ ๊ฐ๊ฑฐ๋ ํฌ๋ฉด true ๋ฅผ
๋ฐํํฉ๋๋ค.
|
var2 >= var1
|
์์
(< )
|
์ผ์ชฝ ํผ์ฐ์ฐ์๊ฐ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์๋ณด๋ค ์์ผ๋ฉด true ๋ฅผ
๋ฐํํฉ๋๋ค.
|
var1 < var2
|
์๊ฑฐ๋ ๊ฐ์
(<= )
|
์ผ์ชฝ ํผ์ฐ์ฐ์๊ฐ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ ๊ฐ๊ฑฐ๋ ์์ผ๋ฉด true ๋ฅผ
๋ฐํํฉ๋๋ค.
|
|
์ฐธ๊ณ :
=>
๋ ์ฐ์ฐ์๊ฐ ์๋๋ผ ํ์ดํ ํจ์์ ํ๊ธฐ๋ฒ์ ๋๋ค.
์ฐ์ ์ฐ์ฐ์
์ฐ์ ์ฐ์ฐ์๋ ๋ ๊ฐ์ ์ซ์ ๊ฐ(๋ฆฌํฐ๋ด ๋๋ ๋ณ์)์ ํผ์ฐ์ฐ์๋ก ๋ฐ์์ ํ๋์ ์ซ์ ๊ฐ์ ๋ฐํํฉ๋๋ค. ํ์ค ์ฐ์ ์ฐ์ฐ์๋
๋ํ๊ธฐ(+
), ๋นผ๊ธฐ(-
), ๊ณฑํ๊ธฐ(*
), ๋๋๊ธฐ(/
)์
๋๋ค. ์ด ์ฐ์ฐ์๋ค์
๋๋ถ๋ถ์ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๋ถ๋์์์ ๊ฐ์ ์ฐ์ฐํ ๋์ ๋์ผํ๊ฒ ๋์ํฉ๋๋ค. (0 ์ผ๋ก ๋๋ ๊ฒฝ์ฐ
Infinity
๋ฅผ ๋ฐํํ๋ ๊ฒ์ ์ฃผ์ํ์ธ์) ์๋ฅผ ๋ค์ด,
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) ์ฐ์ฐ์์ ์์ ์
๋๋ค.
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) ์ฐ์ฐ์์ ์์ ์
๋๋ค.
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) ์ฐ์ฐ์์ ์์ ์
๋๋ค.
var n1 = !true; // !t๋ false ๋ฐํ
var n2 = !false; // !f๋ true ๋ฐํ
var n3 = !"Cat"; // !t๋ false ๋ฐํ
๋จ๋ฝ ํ๊ฐ
๋ ผ๋ฆฌ ์ฐ์ฐ์๋ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ ์์๋ก ํ๊ฐํ๋ฏ๋ก, ๋ค์ ๊ท์น์ ์ฌ์ฉํด์ "๋จ๋ฝ"(short-circuit) ํ๊ฐ๊ฐ ๊ฐ๋ฅํ์ง ํ๋ณํฉ๋๋ค.
false && ์๋ฌด๊ฑฐ๋
๋ ๊ฑฐ์ง์ผ๋ก ๋จ๋ฝ ํ๊ฐํฉ๋๋ค.true || ์๋ฌด๊ฑฐ๋
๋ ์ฐธ์ผ๋ก ๋จ๋ฝ ํ๊ฐํฉ๋๋ค.
๋ ผ๋ฆฌ ๊ท์น์ ์์ ๋จ๋ฝ ํ๊ฐ๊ฐ ํญ์ ์ณ์์ ๋ณด์ฆํฉ๋๋ค. ์๋ฌด๊ฑฐ๋ ๋ถ๋ถ์ ํํ์์ ํ๊ฐ๋ ํ์ง ์์ผ๋ฏ๋ก, ํด๋น ํํ์์์ ์ ๋ฐํ๊ฒ ๋๋ ๋ถ์ ํจ๊ณผ๋ ์ ํ ๋ฐ์ํ์ง ์์์ ์ฃผ์ํ์ธ์.
์ฐธ๊ณ ๋ก ||
์ ์ฌ์ฉํ ๋ ๋ฒ์งธ ๋จ๋ฝ ํ๊ฐ์ ๊ฒฝ์ฐ, ์ต๊ทผ ์ฝ๋์์๋ ์๋ก์ด
๋ ๋ณํฉ ์ฐ์ฐ์
(??
)๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ๋ ๋ณํฉ ์ฐ์ฐ์๋ ์ฒซ ๋ฒ์งธ ์ฐ์ฐ์๊ฐ "๋๊ณผ ์ ์ฌ"ํ, ์ฆ null
์ด๊ฑฐ๋ undefined
์ผ ๋๋ง ๋ ๋ฒ์งธ ํผ์ฐ์ฐ์๋ฅผ ๋ฐํํฉ๋๋ค. ''
์
0
๋ ์ ํจํ ๊ฐ์ด๋ผ๋ฉด ๋ ๋ณํฉ ์ฐ์ฐ์๊ฐ ๊ธฐ๋ณธ ๊ฐ์ ๋ํ๋ผ ๋ ๋ ์ข์ ์ ํ์ง์
๋๋ค.
๋ฌธ์์ด ์ฐ์ฐ์
๋ฌธ์์ด์ ์ฌ์ฉํ ์ ์๋ ๋น๊ต ์ฐ์ฐ์๋ค ์ธ์๋, ๋ฌธ์์ด ์ฐ๊ฒฐ(+
) ์ฐ์ฐ์๋ ๋ ๋ฌธ์์ด์ ๊ฐ์ ์๋ก ์ฐ๊ฒฐํ ์๋ก์ด
๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค.
์๋ฅผ ๋ค์ด,
console.log("๋๋ง์ " + "๋ฌธ์์ด"); // ์ฝ์์ "๋๋ง์ ๋ฌธ์์ด"์ ๊ธฐ๋ก
๋จ์ถ ํ ๋น ์ฐ์ฐ์์ธ +=
๋ํ ๋ฌธ์์ด์ ์ฐ๊ฒฐ๊ฒฐํ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด,
var mystring = "ํ";
mystring += "๊ธ"; // "ํ๊ธ"๋ก ํ๊ฐ๋๋ฉฐ, mystring์ "ํ๊ธ"์ ํ ๋นํจ
์กฐ๊ฑด (์ผํญ) ์ฐ์ฐ์
์กฐ๊ฑด ์ฐ์ฐ์๋ JavaScript์์ ์ธ ๊ฐ์ ํผ์ฐ์ฐ์๋ฅผ ๋ฐ๋ ์ ์ผํ ์ฐ์ฐ์์ ๋๋ค. ์กฐ๊ฑด ์ฐ์ฐ์๋ ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ ๊ฐ ์ค ํ๋๋ฅผ ๋ฐํํ๋ฉฐ, ๊ตฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
condition ? val1 : val2;
๋ง์ฝ condition
์ด ์ฐธ์ด๋ผ๋ฉด, ์กฐ๊ฑด ์ฐ์ฐ์๋ val1
์ ๋ฐํํ๊ณ , ๊ทธ ์ธ์๋ val2
๋ฅผ
๋ฐํํฉ๋๋ค. ๋ค๋ฅธ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ณณ์ด๋ผ๋ฉด ์กฐ๊ฑด ์ฐ์ฐ์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋ค ๋ค์ด,
var status = age >= 18 ? "์ฑ์ธ" : "๋ฏธ์ฑ๋
์";
์์ ๋ช
๋ น๋ฌธ์ age
๊ฐ 18 ์ด์์ด๋ผ๋ฉด status
๋ณ์์ "์ฑ์ธ"์ ํ ๋นํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด
"๋ฏธ์ฑ๋
์"๋ฅผ ํ ๋นํฉ๋๋ค.
์ผํ ์ฐ์ฐ์
์ผํ ์ฐ์ฐ์(,
)๋ ๋ ํผ์ฐ์ฐ์๋ฅผ ๋ชจ๋ ํ๊ฐํ ํ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ ๊ฐ์ ๋ฐํํฉ๋๋ค. ์ผํ ์ฐ์ฐ์๋ ์ฃผ๋ก for
๋ฐ๋ณต๋ฌธ ์์์ ์ฌ์ฉํ์ฌ ํ ๋ฒ์ ๋ฐ๋ณต์ผ๋ก ์ฌ๋ฌ ๋ณ์๋ฅผ ๋ณ๊ฒฝํ ๋ ์ฌ์ฉํฉ๋๋ค. ๊ผญ ํ์ํ์ง ์๋ค๋ฉด, ๊ทธ ์ธ์ ์ํฉ์ ์ฌ์ฉํ๋ ๊ฒ์ ์ข์ง ์์ ์ฝ๋ ์คํ์ผ๋ก ์ฌ๊ฒจ์ง๋๋ค. ๋๊ฐ ์ผํ ์ฐ์ฐ์๋ณด๋ค๋ ๋ ๊ฐ์ ๋ถ๋ฆฌ๋ ๋ช
๋ น๋ฌธ์ ์ฌ์ฉํ๋ ํธ์ด ๋ซ์ต๋๋ค.
์ผํ ์ฐ์ฐ์์ ์์ ๋ก, 10ํ 10์ด์ 2์ฐจ์ ๋ฐฐ์ด a
๋ฅผ ๊ฐ์ ํ ๋, ์๋์ ์ฝ๋๋ ์ผํ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ ๋ ๊ฐ์ ๋ณ์๋ฅผ ํ๋ฒ์ ์
๋ฐ์ดํธํ๋ ๋ชจ์ต์ ๋ณด์
๋๋ค. ์ฝ๋์ ์คํ ๊ฒฐ๊ณผ๋ a
์ ์์๋ฅผ ๋๊ฐ์ ((0, 0), (1, 1), (2, 2), ...)์ผ๋ก ์ถ๋ ฅํ ๊ฒ์
๋๋ค.
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
์ฐ์ฐ์๋ ๊ฐ์ฒด์ ์์ฑ์ ์ญ์ ํฉ๋๋ค. ๊ตฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
delete object.property;
delete object[propertyKey];
delete objectName[index];
์์ ๊ตฌ๋ฌธ์์, objectName
์ ๊ฐ์ฒด์ ์ด๋ฆ์ด๊ณ , property
๋ ๊ฐ์ฒด์ ์กด์ฌํ๋ ์์ฑ,
propertyKey
๋ ์กด์ฌํ๋ ์์ฑ์ ๊ฐ๋ฆฌํค๋ ๋ฌธ์์ด์ด๋ ์ฌ๋ณผ์
๋๋ค.
delete
์ฐ์ฐ์๊ฐ ์์ฑ์ ์ฑ๊ณต์ ์ผ๋ก ์ญ์ ํ ์ดํ, ํด๋น ์์ฑ์ ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด undefined
๊ฐ
๋ฐํ๋ฉ๋๋ค. delete
๋ ์์ฑ์ ์ ๊ฑฐํ ์ ์๋ ๊ฒฝ์ฐ์๋ true
๋ฅผ ๋ฐํํ๊ณ , ์ ๊ฑฐํ ์ ์์ ๋
false
๋ฅผ ๋ฐํํฉ๋๋ค.
delete Math.PI; // false ๋ฐํ (์ค์ ๋ถ๊ฐํ ์์ฑ ์ญ์ ๋ถ๊ฐ)
const myObj = { h: 4 };
delete myobj.h; // true ๋ฐํ (์ฌ์ฉ์ ์ ์ ์์ฑ ์ญ์ ๊ฐ๋ฅ)
๋ฐฐ์ด์ ์์ ์ญ์ ํ๊ธฐ
๋ฐฐ์ด๋ ํ๋ฒํ ๊ฐ์ฒด์ด๋ฏ๋ก, ๊ธฐ์ ์ ์ผ๋ก๋ delete
๋ฅผ ์ฌ์ฉํด์ ์์๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋
์ข์ ๋ฐฉ๋ฒ์ด ์๋๋ฏ๋ก ํผํด์ผ ํฉ๋๋ค. ๋ฐฐ์ด์ ์์ฑ์ ์ ๊ฑฐํด๋ ๋ฐฐ์ด ๊ธธ์ด ์์ฑ์ ์ํฅ์ ๋ฐ์ง ์์ผ๋ฉฐ, ๋ค๋ฅธ ์์์ ์ธ๋ฑ์ค๋
๊ทธ๋๋ก ๋จ์์์ต๋๋ค. ์ด๋ฐ ๋์์ ์ํ๋ค๋ฉด ๋จ์ํ ๊ฐ์ undefined
๋ก ๋ฎ์ด์ฐ๋ ํธ์ด ํจ์ฌ ๋ซ์ต๋๋ค. ์ค์ ๋ก
๋ฐฐ์ด์ ๋ณํํ๊ณ ์ ํ๋ฉด splice
์ ๊ฐ์ ๋ค์ํ ๋ฐฐ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ธ์.
typeof
typeof
์ฐ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก
์ฌ์ฉํฉ๋๋ค.
typeof operand;
typeof (operand);
typeof
์ฐ์ฐ์๋ ํ๊ฐ ์ ์ ํผ์ฐ์ฐ์ ํ์
์ ๋ํ๋ด๋ ๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค. operand
๋ ๋ฌธ์์ด,
๋ณ์, ํค์๋, ๊ฐ์ฒด ๋ฑ ํ์
์ ์์๋ผ ๊ฐ์
๋๋ค. ์ฃผ์์ ๊ดํธ๋ ์ ํ ์ฌํญ์
๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๋ณ์๋ฅผ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
var myFun = new Function("5 + 2");
var shape = "round";
var size = 1;
var foo = ["Apple", "Mango", "Orange"];
var today = new Date();
typeof
์ฐ์ฐ์๋ ์์ ๋ณ์๋ค์ ๋ํด์ ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ ๋ฐํํฉ๋๋ค.
typeof myFun; // "function" ๋ฐํ
typeof shape; // "string" ๋ฐํ
typeof size; // "number" ๋ฐํ
typeof foo; // "object" ๋ฐํ
typeof today; // "object" ๋ฐํ
typeof dontExist; // "undefined" ๋ฐํ
ํค์๋ true
์ null
์ ๋ํด์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค.
typeof true; // "boolean" ๋ฐํ
typeof null; // "object" ๋ฐํ
์ซ์์ ๋ฌธ์์ด์์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค.
typeof 62; // "number" ๋ฐํ
typeof "Hello world"; // "string" ๋ฐํ
๊ฐ์ฒด์ ์์ฑ์ ์ฌ์ฉํ๋ฉด ์์ฑ์ด ๊ฐ๊ณ ์๋ ๊ฐ์ ํ์ ์ ๋ฐํํฉ๋๋ค.
typeof document.lastModified; // "string" ๋ฐํ
typeof window.length; // "number" ๋ฐํ
typeof Math.LN2; // "number" ๋ฐํ
๋ฉ์๋์ ํจ์์ ๋ํด์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค.
typeof blur; // "function" ๋ฐํ
typeof eval; // "function" ๋ฐํ
typeof parseInt; // "function" ๋ฐํ
typeof shape.split; // "function" ๋ฐํ
์ฌ์ ์ ์๋ ๊ฐ์ฒด์ ๋ํด์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค.
typeof Date; // "function" ๋ฐํ
typeof Function; // "function" ๋ฐํ
typeof Math; // "object" ๋ฐํ
typeof Option; // "function" ๋ฐํ
typeof String; // "function" ๋ฐํ
void
void
์ฐ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํฉ๋๋ค.
void (expression);
void expression;
void
์ฐ์ฐ์๋ ํํ์์ ํ๊ฐํ ๋ ๊ฐ์ ๋ฐํํ์ง ์๋๋ก ์ง์ ํฉ๋๋ค. expression
์ ํ๊ฐํ
JavaScript ํํ์์
๋๋ค. ์ฃผ์ ๊ดํธ๋ ์ ํ ์ฌํญ์ด์ง๋ง, ์ฌ์ฉํ๋ฉด ์ข์ต๋๋ค.
๊ด๊ณ ์ฐ์ฐ์
๊ด๊ณ ์ฐ์ฐ์๋ ํผ์ฐ์ฐ์๋ฅผ ์๋ก ๋น๊ตํ๊ณ , ๋น๊ต ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ธ์ง์ ๋ฐ๋ผ ๋ถ๋ฆฌ์ธ ๊ฐ์ ๋ฐํํฉ๋๋ค.
in
in
์ฐ์ฐ์๋ ์ง์ ํ ์์ฑ์ด ์ง์ ํ ๊ฐ์ฒด์
์กด์ฌํ ๊ฒฝ์ฐ true
๋ฅผ ๋ฐํํฉ๋๋ค. ๊ตฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
propNameOrNumber in objectName;
propNameOrNumber
๋ ์์ฑ์ด๋ ๋ฐฐ์ด ์ธ๋ฑ์ค๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด, ์ซ์, ์ฌ๋ณผ ํํ์์ด๋ฉฐ
objectName
์ ๊ฐ์ฒด์ ์ด๋ฆ์
๋๋ค.
๋ค์ ์ฝ๋๋ in
์ฐ์ฐ์์ ์์ ์
๋๋ค.
// ๋ฐฐ์ด
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
๋ฅผ ๋ฐํํฉ๋๋ค.
objectName instanceof objectType;
objectName
์ objectType
๊ณผ ๋น๊ตํ ๊ฐ์ฒด์ ์ด๋ฆ์ด๊ณ , objectType
์
Date
, Array
์ ๊ฐ์ ๊ฐ์ฒด ํ์
์
๋๋ค.
๋ฐํ์์ ๊ฐ์ฒด์ ํ์
์ ํ์ธํ ํ์๊ฐ ์์ผ๋ฉด instanceof
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ธ์. ์์ปจ๋ ์์ธ ์ฒ๋ฆฌ ์์, ์ก์๋ธ
์์ธ์ ํ์
์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
๋ค์์ ์ฝ๋๋ instanceof
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ theDay
๊ฐ์ฒด๊ฐ Date
๊ฐ์ฒด์ธ์ง ์์๋ด๋
์์ ์
๋๋ค. theDay
๊ฐ์ฒด๋ Date
๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์, if
๋ช
๋ น๋ฌธ ์์ ๋ด์ฉ์ด
์คํ๋ฉ๋๋ค.
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
๋ฅผ ์ ์ด๋ ๋๊ดํธ ํ๊ธฐ๋ฒ๊ณผ ํจ๊ป
์ฌ์ฉํ์ธ์.
this["propertyName"];
this.propertyName;
์ต๋์ ์ต์ ๊ฐ์ ๋ฐ์์, ์ด๋ค ๊ฐ์ฒด์ value
์์ฑ ์ ํจ์ฑ์ ๊ฒ์ฆํ๋ validate
๋ผ๋ ํจ์๋ฅผ
๊ฐ์ ํด๋ด
์๋ค.
function validate(obj, lowval, hival) {
if (obj.value < lowval || obj.value > hival) console.log("์๋ชป๋ ๊ฐ!");
}
๋ค์๊ณผ ๊ฐ์ด, ๊ฐ ์์ ์์์ onchange
์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ์์ validate
๋ฅผ ํธ์ถํ ๋ this
๋ฅผ ์ฌ์ฉํด์ ์์ ์์์ ์ฐธ์กฐ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
<p>18๊ณผ 99 ์ฌ์ด์ ์๋ฅผ ์
๋ ฅ:</p>
<input type="text" name="age" size="3" onchange="validate(this, 18, 99);" />
๊ทธ๋ฃน ์ฐ์ฐ์
๊ทธ๋ฃน์ฐ์ฐ์ ()
๋ ํํ์ ํ๊ฐ์ ์ฐ์ ์์๋ฅผ ์กฐ์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ณฑํ๊ธฐ์ ๋๋๊ธฐ๋ณด๋ค ๋ํ๊ธฐ์ ๋นผ๊ธฐ ์ฐ์ฐ์
๋จผ์ ์ํํ ์ ์์ต๋๋ค.
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
์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์ ์ ์ ๊ฐ์ฒด
ํ์
์ด๋ ๋ด์ฅ ๊ฐ์ฒด ํ์
์ ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์๋ ์ฝ๋์ฒ๋ผ ์ฌ์ฉํ์ธ์.
var objectName = new objectType([param1, param2, ..., paramN]);
super
super ํค์๋๋ ๊ฐ์ฒด์ ๋ถ๋ชจ๊ฐ ๊ฐ์ง ํจ์๋ฅผ ํธ์ถํ ๋ ์ฌ์ฉํฉ๋๋ค. ์๋ฅผ ํ๋ ๋ค๋ฉด, ํด๋์ค์์ ๋ถ๋ชจ์ ์์ฑ์๋ฅผ ํธ์ถํด์ผ ํ ๋ ์ ์ฉํ๊ฒ ์ธ ์ ์์ต๋๋ค.
super([arguments]); // ๋ถ๋ชจ ์์ฑ์ ํธ์ถ
super.functionOnParent([arguments]);