์ซ์์ ๋ ์ง
์ด ์ฅ์์๋ JavaScript์์ ์ซ์์ ๋ ์ง๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ๊ฐ๋
๊ณผ ๊ฐ์ฒด, ํจ์์ ๋ํด ์๊ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ซ์๋ฅผ 10์ง๋ฒ, 2์ง๋ฒ, 16์ง๋ฒ ๋ฑ์ ๋ค์ํ ํํ๋ก ํํํ๋ ๋ฐฉ๋ฒ๊ณผ ๋๋ถ์ด Math ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด ๋ค์ํ ์ํ ์ฐ์ฐ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์ ์ ์์ต๋๋ค.
์ซ์
JavaScript์์ ๋ชจ๋ ์ซ์๋ double-precision 64-bit binary format IEEE 754 (์ฆ, ยฑ2^โ1022 ๊ณผ ยฑ2^+1023 ๋๋ ๋๋ต ยฑ10^โ308 to ยฑ10^+308 ์ฌ์ด์ ์ซ์์ด๋ฉฐ 53bits์ ์์น์ ๋ฐ๋ )๋ก ๊ตฌํ๋์ด ์์ต๋๋ค. ยฑ2^53 - 1๊น์ง์ ์ ์ ๊ฐ์ ์ ํํ๊ฒ ๋ํ๋ผ ์ ์์ต๋๋ค.
์ฌ๊ธฐ ๋ถ๋ ์์์ ์ซ์๋ฅผ ๋ํ๋ผ ์ ์์ผ๋ฉฐ, ์ซ์ ํ์์ ์ธ ๊ฐ์ ์์ง์ ์ธ ๊ฐ: +Infinity, -Infinity, and NaN (์ซ์๊ฐ ์๋ ๊ฐ)์ ๊ฐ์ต๋๋ค.
JavaScript์ ์ต๊ทผ ์ถ๊ฐ ๋ ๊ฒ์ BigInt๋ก, ๋งค์ฐ ํฐ ์ ์๋ฅผ ๋ํ๋ผ ์ ์์ต๋๋ค. BigInt๋ฅผ์ฌ์ฉํ ๋ ๋ค์์ ์ฃผ์ํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด, BigInt์ Number ๊ฐ์ ๊ฐ์ ์ฐ์ฐ์ผ๋ก ํผํฉํ๊ณ ์ผ์น์ํฌ ์๋ ์์ผ๋ฉฐ Math ๊ฐ์ฒด๋ฅผ BigInt๊ฐ๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
JavaScript์์ ๋ค๋ฅธ ๊ธฐ๋ณธํ๊ณผ ๋ฌธ๋งฅ์ ๋ํ ๋ด์ฉ์ JavaScript data types and structures๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฌ๋ฌ๋ถ์ ์ซ์ ๋ฆฌํฐ๋ด์ ๋ค ๊ฐ์ง ์ ํ์ ์ฌ์ฉํ ์ ์์ต๋๋ค: 10์ง์, 2์ง์, 8์ง์, 16์ง์
10์ง์
1234567890;
42;
// ์์ 0์ด ๋ถ์ ์ซ์๋ฅผ ์กฐ์ฌํ์ธ์:
0888; // 10์ง์ 888๋ก ํด์๋ฉ๋๋ค.
0777; // non-strict mode์์ 10์ง์ 511๋ก ํด์๋ฉ๋๋ค.
10์ง์ ๋ฆฌํฐ๋ด๋ ์(0)์ผ๋ก ์์๋ ์ ์๋ค๋ ์ ์ ์ ์ํ์ธ์. ๊ทธ๋ฌ๋ ๋ง์ฝ ์0 ๋ค์ ์ซ์๊ฐ 8๋ณด๋ค ์์ผ๋ฉด, ๊ทธ ์ซ์๋ 8์ง๋ฒ์ผ๋ก ํด์๋ฉ๋๋ค.
2์ง์
2์ง์ ๊ตฌ๋ฌธ์ ์์ ์ค๋ 0๊ณผ ์๋ฌธ์ ๋๋ ๋๋ฌธ์ ๋ผํด ๋ฌธ์ "B"(0B ๋๋ 0b)๋ฅผ ์ฌ์ฉํฉ๋๋ค. 0b ๋ค์์ ์ซ์๊ฐ 0 ๋๋ 1์ด ์๋๋ฉด ๋ค์์ SyntaxError๊ฐ ๋ฐ์ํฉ๋๋ค. "0b ์ดํ์ ๋๋ฝ ๋ 2 ์ง์"("Missing binary digits after 0b")์ ๋๋ค.
var FLT_SIGNBIT = 0b10000000000000000000000000000000; // 2147483648
var FLT_EXPONENT = 0b01111111100000000000000000000000; // 2139095040
var FLT_MANTISSA = 0b00000000011111111111111111111111; // 8388607
8์ง์
8 ์ง์ ๊ตฌ๋ฌธ์ ์์ 0์ ์ฌ์ฉํฉ๋๋ค. 0 ์ดํ์ ์ซ์๊ฐ 0์์ 7๊น์ง ๋ฒ์ ๋ฐ์ ์๋ ๊ฒฝ์ฐ, ์ซ์๋ 10์ง์๋ก ํด์๋ฉ๋๋ค.
var n = 0755; // 493
var m = 0644; // 420
ECMAScript 5์ Strict ๋ชจ๋๋ 8 ์ง์ ๊ตฌ๋ฌธ์ ๊ธ์งํฉ๋๋ค. 8 ์ง์ ๊ตฌ๋ฌธ์ ECMAScript 5์ ์ผ๋ถ๊ฐ ์๋์ง๋ง, 0644 === 420 ๋ฐ "\ 045"=== "%"์ 8 ์ง์์ ์ ๋์ฌ๋ฅผ ๋ถ์ด๋ฉด ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋ฉ๋๋ค. ECMAScript 2015์์๋ ์ ๋์ด๊ฐ 0o์ธ ๊ฒฝ์ฐ 8 ์ง์๊ฐ ์ง์๋ฉ๋๋ค (์ :
var a = 0o10; // ES2015: 8
16์ง์
16์ง์ ๊ตฌ๋ฌธ์ ์์ 0 ๋ค์์ ์๋ฌธ์๋ ๋๋ฌธ์ ๋ผํด์ด ๋ฌธ์ "X"(0x ๋๋ 0X)๋ฅผ ์ฌ์ฉํฉ๋๋ค. 0X ์ดํ ์ซ์๊ฐ ๋ฒ์(0123456789ABCDEF) ๋ฐ์ ์๋ ๊ฒฝ์ฐ, ๋ค์ SyntaxError๊ฐ ๋ฐ์ํฉ๋๋ค: "์๋ณ์๋ ์ซ์ ๋ฆฌํฐ๋ด ํ ์ฆ์ ์์๋ฉ๋๋ค".
0xfffffffffffffffff; // 295147905179352830000
0x123456789abcdef; // 81985529216486900
0xa; // 10
์ง์ ๊ณ์ฐ
1E3 // 1000 2e6 // 2000000 0.1e2 // 10
Number ๊ฐ์ฒด
Number ๋ด์ฅ๊ฐ์ฒด๋ ์ต๋๊ฐ, not-a-number, ๋ฌดํ๋์ ๊ฐ์ ์ซ์ ์์๋ฅผ ์ํ ์์ฑ๋ค์ด ์์ต๋๋ค. ์ฌ๋ฌ๋ถ์ ์ด๋ฌํ ์์ฑ์ ๊ฐ์ ๋ณ๊ฒฝ ํ ์ ์๊ณ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํฉ๋๋ค:
var biggestNum = Number.MAX_VALUE;
var smallestNum = Number.MIN_VALUE;
var infiniteNum = Number.POSITIVE_INFINITY;
var negInfiniteNum = Number.NEGATIVE_INFINITY;
var notANum = Number.NaN;
์ฌ๋ฌ๋ถ์ ์ง์ ์์ฑํ Number ๊ฐ์ฒด์ ์์ฑ์ด ์๋, ์์๊ฐ์ด ํญ์ ๋ฏธ๋ฆฌ ์ ์๋ Number ๊ฐ์ฒด์ ์์ฑ์ ์ฐธ์กฐํด์ผํฉ๋๋ค.
๋ค์ ํ์์๋ Number ๊ฐ์ฒด์ ์์ฑ์ด ์์ฝ๋์ด ์์ต๋๋ค.
| ํน์ฑ | ๋ฌ์ฌ |
|---|---|
Number.MAX_VALUE |
ํํ๊ฐ๋ฅํ ๊ฐ์ฅ ํฐ ์ (ยฑ1.7976931348623157e+308) |
Number.MIN_VALUE |
ํํ๊ฐ๋ฅํ ๊ฐ์ฅ ์์ ์(ยฑ5e-324) |
Number.NaN |
"์ซ์๊ฐ ์๋" ํน์๊ฐ |
Number.NEGATIVE_INFINITY |
์์ ๋ฌดํ๋๊ฐ; ์ค๋ฒ ํ๋ก๋ก ๋ฐํ๋จ. |
Number.POSITIVE_INFINITY |
์์ ๋ฌดํ๋ ๊ฐ; ์ค๋ฒ ํ๋ก๋ก ๋ฐํ๋จ. |
Number.EPSILON |
ํํ๊ฐ๋ฅํ ๋งค์ฐ ์์ ๊ฐNumber.(2.220446049250313e-16) |
Number.MIN_SAFE_INTEGER |
JavaScript์์ ์์ ํ ์ต์์ ์ ์.(โ2^53 + 1, or โ9007199254740991) |
Number.MAX_SAFE_INTEGER |
JavaScript์์ ์์ ํ ์ต๋์ ์ ์.(+2^53 โ 1, or +9007199254740991) |
| ๋ฐฉ๋ฒ | ๋ฌ์ฌ |
|---|---|
Number.parseFloat() |
๋ฌธ์์ด ์ธ์๋ฅผ ํ์ฑํ๊ณ ๋ถ๋ ์์์ ์ซ์๋ฅผ ๋ฐํํฉ๋๋ค. ์ ์ญ
|
Number.parseInt() |
๋ฌธ์์ด ๋ผ์ธ ์ธ์๋ฅผ ํ์ฑํด, ์ง์ ๋ ๊ธฐ์ ๋๋ ๋ฐ์ค์ ์ ์๋ฅผ ๋๋ ค์ค๋๋ค.
์ ์ญ parseInt()ํจ์์ ๋์ผํฉ๋๋ค.
|
Number.isFinite() |
์ ๋ฌ๋ ๊ฐ์ด ์ ํํ ์์ธ์ง ํ์ ํฉ๋๋ค. |
Number.isInteger() |
์ ๋ฌ๋ ๊ฐ์ด ์ ์์ธ์ง ํ์ ํฉ๋๋ค. |
Number.isNaN() |
์ด ์ ๋ฌ๋ ๊ฐ
Not-a-Number์ฌ๋ถ๋ฅผ
ํ์ธํฉ๋๋ค. ์๋ณธ ๊ธ๋ก๋ฒ
(isNaN)์ ๋์ฑ
๊ฐ๋ ฅํ ๋ฒ์ ์
๋๋ค.
|
Number.isSafeInteger() |
์ ๊ณต๋ ๊ฐ์ด ์์ ํ ์ ์์ธ์ง ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค. |
Number ํ๋กํ ํ์
์ ๋ค์ํ ํ์์ Number ๊ฐ์ฒด์์ ์ ๋ณด๋ฅผ ๊ฒ์ํ๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ค์ ํ๋ Number.prototype์ ๋ฉ์๋๋ฅผ ์์ฝ ํ ๊ฒ์
๋๋ค.
| ๋ฐฉ๋ฒ | Description |
|---|---|
toExponential() |
์ง์ํ๊ธฐ๋ฒ ์์์ ๋ฒํธ๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค. |
toFixed() |
๋ฌธ์์ด ๊ณ ์ ์์ ์ ํ๊ธฐ๋ฒ์ ์๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค. |
toPrecision() |
์ง์ ๋ ์ ๋ฐ์ ๊ณ ์ ์์ ์ ํ๊ธฐ๋ฒ์ ์๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค. |
Math ๊ฐ์ฒด
๋ด์ฅ Math ๊ฐ์ฒด๋ ์ํ ์์ ๋ฐ ํจ์์ ๋ํ ์์ฑ ๋ฐ ๋ฉ์๋๋ฅผ ํฌํจํฉ๋๋ค. ์๋ฅผ ๋ค์ด, Math ๊ฐ์ฒด์ PI ์์ฑ์๋ pi (3.141 ...) ๊ฐ์ด ์์ต๋๋ค.์ด ๊ฐ์ ์์ฉ ํ๋ก๊ทธ๋จ์์ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํฉ๋๋ค.
Math.PI;
๋ง์ฐฌ๊ฐ์ง๋ก ํ์ค ์ํ ํจ์๋ Math์ ํจ์์
๋๋ค. ์ฌ๊ธฐ์๋ ์ผ๊ฐ ํจ์, ๋ก๊ทธ ํจ์, ์ง์ ํจ์ ๋ฐ ๊ธฐํ ํจ์๊ฐ ํฌํจ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ผ๊ฐ ํจ์ sine์ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ฑํฉ๋๋ค.
Math.sin(1.56);
Math์ ๋ชจ๋ ์ผ๊ฐ ํจ์์๋ ๋ผ๋์์ผ๋ก ๋งค๊ฒ๋ณ์๋ฅผ ์
๋ ฅํด์ผ ํฉ๋๋ค.
๋ค์ ํ์์๋ Math ๊ฐ์ฒด์ ๋ฐฉ๋ฒ์ ์์ฝํ์์ต๋๋ค.
| ๋ฐฉ๋ฒ | ๋ฌ์ฌ |
|---|---|
abs() |
์ ๋ ๊ฐ |
sin(),
cos(),
tan()
|
ํ์ค ์ผ๊ฐ ํจ์; ๋ผ๋์์์์ ์ธ์ |
asin(),
acos(),
atan(),
atan2()
|
์ญ์ผ๊ฐ ํจ์; ๋ผ๋์์ ๋ฐํ ๊ฐ |
sinh(),
cosh(),
tanh()
|
์๊ณก์ผ๊ฐํจ์; ๋ผ๋์์ ๋ฐํ ๊ฐ. |
asinh(),
acosh(),
atanh()
|
์ญ์๊ณก์ผ๊ฐํจ์; ๋ผ๋์์ ๋ฐํ ๊ฐ. |
| ์ง์์ ๋ก๊ทธ ๊ธฐ๋ฅ. | |
floor(),
ceil()
|
๊ฐ์ฅํฐ/๊ฐ์ฅ์์ ์ ์ ๋ณด๋ค ์ ์/๋ง์ ๋๋ ๊ทธ์ ๋๋ฑํ ์์น์ผ๋ก ๋ฐํํด๋ผ. |
min(),
max()
|
๋์ ๊ฑฐ๋ ๋๋ง์ ์ผํ์ (๊ฐ๊ฐ) ์ซ์ ์ธ์์ ๋๋๋ชฉ๋ก์ผ๋ก ๋ฐํํด๋ผ. |
random() |
0๊ณผ 1์ฌ์ด์ ๋์๋ฅผ ๋ฐํํด๋ผ. |
round(),
fround(),
trunc(),
|
๋ฐ์ฌ๋ฆผ๊ณผ ์ ๋จ ๊ธฐ๋ฅ๋ค. |
sqrt(),
cbrt(),
hypot()
|
์ ๊ณฑ ๊ทผ, ์ธ ์ ๊ณฑ ๊ทผ, ํ๋ฐฉ ์ธ์์ ํฉ์ ์ ๊ณฑ ๊ทผ. |
sign() |
๊ทธ ์๊ฐ ์์์ธ์ง ์์์ธ์ง 0์ธ์ง๋ฅผ ๊ฐ๋ฅดํค๋ ์ซ์์ ํ์. |
clz32(),imul()
|
32๋นํธ ์ด์ง ํ์์ ์ฃผ์ ์ ๋ก ๋นํธ ์. ๊ทธ ๋ ์ธ์์ C-like 32๋นํธ ๊ณฑ์ ์ ๊ฒฐ๊ณผ. |
๋ค๋ฅธ ๋ง์ ๊ฐ์ฒด์ ๋ฌ๋ฆฌ ์์ ์ Math ๊ฐ์ฒด๋ฅผ ๋ง๋คํ์๊ฐ ์์ต๋๋ค. ์ธ์ ๋ ๋ด์ฅ ๋ Math ๊ฐ์ฒด ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
Date ๊ฐ์ฒด
JavaScript์๋ ๋ ์ง ๋ฐ์ดํฐ ํ์
์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋, Date ๊ฐ์ฒด์ ๊ทธ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ฉ ํ๋ก๊ทธ๋จ์์ ๋ ์ง์ ์๊ฐ์ ์ฒ๋ฆฌ ํ ์ ์์ต๋๋ค. Date ๊ฐ์ฒด์๋ ๋ ์ง ์ค์ , ๊ฐ์ ธ ์ค๊ธฐ ๋ฐ ์กฐ์์์ํ ๋ง์ ๋ฉ์๋๊ฐ ์์ต๋๋ค. ์์ฑ(properties)์ด ์์ต๋๋ค.
JavaScript๋ ์๋ฐ์ ๋น์ทํ๊ฒ ๋ ์ง๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. ๋ ์ธ์ด์๋ ๋์ผํ ๋ ์ง ๋ฉ์๋๊ฐ ๋ง์ผ๋ฉฐ ๋ ์ธ์ด ๋ชจ๋ 1970 ๋ 1 ์ 1 ์ผ 00:00:00 ์ดํ์ ๋ฐ๋ฆฌ ์ด ์๋ก ๋ ์ง๋ฅผ ์ ์ฅํฉ๋๋ค. ์ ๋์ค ํ์ ์คํฌํ๋ 1970 ๋ 1 ์ 1 ์ผ 00:00:00 ์ดํ์ ์ด ์์ ๋๋ค.
Date ๊ฐ์ฒด ๋ฒ์๋ UTC 1970 ๋ 1 ์ 1 ์ผ์ ๊ธฐ์ค์ผ๋ก -100,000,000 ์ผ์์ 100,000,000 ์ผ์ ๋๋ค.
Date ๊ฐ์ฒด๋ฅผ ๋ง๋ค๋ ค๋ฉด :
var dateObjectName = new Date([parameters]);
์ฌ๊ธฐ์ dateObjectName์ ๋ง๋ค๋ ค๋ Date ๊ฐ์ฒด์ ์ด๋ฆ์
๋๋ค. ์๋ก์ด ๊ฐ์ฒด ๋๋ ๊ธฐ์กด ๊ฐ์ฒด์ ์์ฑ ์ผ ์ ์์ต๋๋ค.
new ํค์๋์์ด Date๋ฅผ ํธ์ถํ๋ฉด ํ์ฌ ๋ ์ง์ ์๊ฐ์ ๋ํ๋ด๋ ๋ฌธ์์ด์ด ๋ฐํ๋ฉ๋๋ค.
์ ๊ตฌ๋ฌธ์์ parameters๋ ์๋ ๊ท์น์ ๋ฐ๋ฆ
๋๋ค.
- ์๋ฌด๊ฒ๋์์๋: ์ค๋์ ๋ ์ง์ ์๊ฐ์ ๋ง๋ญ๋๋ค. ์๋ฅผ ๋ค์ด,
today = new Date();. - ๋ ์ง๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด์ ํ์: "Month day, year hours:minutes:seconds."์๋ฅผ ๋ค์ด,
var Xmas95 = new Date("December 25, 1995 13:30:00").๋ง์ฝ ๋น์ ์ด ์๊ฐ, ๋ถ, ๋๋ ์ด๋ฅผ ๋น ๋จ๋ฆฐ๋ค๋ฉด, ๊ฐ์ 0์ด ๋ฉ๋๋ค. - ์ ์ ๊ฐ์ ์ฐ๋, ์, ๋ ์ ์งํฉ์
๋๋ค. ์๋ฅผ ๋ค์ด,
var Xmas95 = new Date(1995, 11, 25). - ์ฐ๋, ์, ์ผ, ์, ๋ถ,์ด ๋์ ์ ์ ๊ฐ์ ์งํฉ์
๋๋ค.. ์๋ฅผ ๋ค์ด,
var Xmas95 = new Date(1995, 11, 25, 9, 30, 0);.
Data ๊ฐ์ฒด์ ํํ ๋ฐฉ๋ฒ
๋ ์ง์ ์๊ฐ์ ์กฐ์ ํ๋ Date๊ฐ์ฒดํํ ๋ฐฉ๋ฒ์ ์๋ ์ข
๋ฅ๋ก ๋๋ฉ๋๋ค:
- "set" ํจ์, ๋ ์ง ๊ฐ์ฒด ์์์์ ๋ ์ง ๋ฐ ์๊ฐ ๊ฐ์ ์ค์ ํฉ๋๋ค.
- "get" ํจ์, ๋ ์ง ๊ฐ์ฒด ์์์์ ๋ ์ง ๋ฐ ์๊ฐ ๊ฐ์ ์ป์ต๋๋ค.
- "to" ํจ์, ๋ ์ง ๊ฐ์ฒด๋ก๋ถํฐ ๋ฌธ์์ด ๊ฐ์ ๋ฐํํฉ๋๋ค.
Date๋ฌธ์์ด์ ๋ถ์ํ๊ธฐ์ํด parse์ UTCํจ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
"get"๋ฐ "set"๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ด, ๋ถ,์, ์ผ, ์์ผ, ์ ๋ฐ ์ฐ๋๋ฅผ ๋ณ๋๋ก ๊ฐ์ ธ ์์ ์ค์ ํ ์ ์์ต๋๋ค. ์์ผ์ด ์๋์ ์ผ๋ก ์ค์ ๋๊ธฐ (์ํด) ๋๋ฌธ์, ์์ผ์ ๋๋ ค์ฃผ๋ getDay ๋ฉ์๋๊ฐ ์์ต๋๋ค๋ง, ๋์ํ๋ setDay ๋ฉ์๋๋ ์์ต๋๋ค. ์ด๋ฌํ ๋ฉ์๋๋ ์ ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ๊ฐ์ ๋ํ๋ ๋๋ค.
- ์ด์ ๋ถ: 0 to 59
- ์๊ฐ: 0 to 23
- ์์ผ: 0 (Sunday) to 6 (Saturday)
- ๋ ์ง: 1 to 31 (day of the month)
- ์: 0 (January) to 11 (December)
- ์ฐ๋: years since 1900
์๋ฅผ ๋ค์ด, ์๋์ ๊ฐ์ด ๊ฐ๋ค์ ์ ์ํด๋ด ์๋ค :
var Xmas95 = new Date("December 25, 1995");
๊ทธ๋ฌ๋ฉด Xmas95.getMonth()๋ 11์ ๋ฐํํฉ๋๋ค, ๊ทธ๋ฆฌ๊ณ Xmas95.getFullYear()๋ 1995๋ฅผ ๋ฐํํฉ๋๋ค.
getTime๊ณผ setTime๋ฐฉ๋ฒ๋ค์ ๋ ์ง๋ฅผ ๋๋๋ ์ ์ฉํฉ๋๋ค. getTimeํจ์๋ Date๊ฐ์ฒด์ ๋ํด 1970๋
1์ 1์ผ 00:00์๋ถํฐ ๋ฐ๋ฆฌ์ด๋จ์๋ก ๋ฆฌํดํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๋ค์ ์ฝ๋๋ ํ์ฌ ๋ ๋์ ๋จ์ ์๋ฅผ ํ์ํฉ๋๋ค:
var today = new Date();
var endYear = new Date(1995, 11, 31, 23, 59, 59, 999); // Set day and month
endYear.setFullYear(today.getFullYear()); // Set year to this year
var msPerDay = 24 * 60 * 60 * 1000; // Number of milliseconds per day
var daysLeft = (endYear.getTime() - today.getTime()) / msPerDay;
var daysLeft = Math.round(daysLeft); //returns days left in the year
์ด ์์ ์๋ ์ค๋ ๋ ์ง๊ฐ ํฌํจ๋ today๋ผ๋ ๋ช
์นญ์ ๊ฐ์ง Date๊ฐ์ฒด๋ฅผ ๋ง๋ญ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ endYear๋ผ๋ Date๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ํ์ฌ์ฐ๋๋ฅผ ์ค์ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํ๋ฃจ์ ๋ฐ๋ฆฌ ์ด ์๋ฅผ ์ฌ์ฉํ์ฌ getTime์ ์ฌ์ฉํ๊ณ ์ ์ฒด ์ผ ์๋ฅผ ๋ฐ์ฌ๋ฆผํ์ฌ today์ endYear ์ฌ์ด์ ์ผ ์๋ฅผ ๊ณ์ฐํฉ๋๋ค.
Parse ํจ์๋ ๋ ์ง๋ฌธ์์ด๋ถํฐ ๊ธฐ์กด์ Date๊ฐ์ฒด๊น์ง์ ๊ฐ์ ํ ๋นํ๊ธฐ์ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์ ์ฝ๋๋ ๊ทธ IPOdate ๊ฐ์ฒด์ ๋ ์ง๊ฐ์ ํ ๋นํ๊ธฐ์ํด parse์ setTime์ ์ฌ์ฉํฉ๋๋ค;
var IPOdate = new Date();
IPOdate.setTime(Date.parse("Aug 9, 1995"));
์์
๋ค์ ์์ ์์ JSClock()๋ digital ์๊ณํ์์ ์๊ฐ์ ๋ฐํํฉ๋๋ค.
function JSClock() {
var time = new Date();
var hour = time.getHours();
var minute = time.getMinutes();
var second = time.getSeconds();
var temp = "" + (hour > 12 ? hour - 12 : hour);
if (hour == 0) temp = "12";
temp += (minute < 10 ? ":0" : ":") + minute;
temp += (second < 10 ? ":0" : ":") + second;
temp += hour >= 12 ? " P.M." : " A.M.";
return temp;
}
JSClock ํจ์๋ ๋จผ์ time์ด๋ผ๋ ์ Date ๊ฐ์ฒด๋ฅผ ๋ง๋ญ๋๋ค. ์ธ์๊ฐ ์์ผ๋ฏ๋ก ํ์ฌ ๋ ์ง์ ์๊ฐ์ผ๋ก ์๊ฐ์ด ์์ฑ๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ getHours, getMinutes ๋ฐ getSeconds ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ํ์ฌ ์๊ฐ, ๋ถ ๋ฐ ์ด ๊ฐ์ดhour, minute, second๋ก ํ ๋น๋ฉ๋๋ค.
๋ค์ ๋ค ๋ฌธ์ฅ์ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด ๊ฐ์ ๋ง๋ญ๋๋ค. ์ฒซ ๋ฒ์งธ ๋ช ๋ น๋ฌธ์ ๋ณ์ temp๋ฅผ ์์ฑํ๊ณ ์กฐ๊ฑด์์ ์ฌ์ฉํ์ฌ ๊ฐ์ ํ ๋นํฉ๋๋ค. hour๊ฐ 12๋ณด๋ค ํฐ ๊ฒฝ์ฐ (hour - 12), ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์๊ฐ์ด 0์ด ์๋ ๊ฒฝ์ฐ ์๊ฐ์ด 12 ์ผ ๊ฒฝ์ฐ ์๊ฐ์ด 12๊ฐ๋ฉ๋๋ค.
๋ค์ ๋ช
๋ น๋ฌธ์ temp ๊ฐ์ minute ๊ฐ์ ์ถ๊ฐํฉ๋๋ค. ๋ถ(minute)์ ๊ฐ์ด 10๋ณด๋ค ์ ์ผ๋ฉด ์กฐ๊ฑด์์ ์์ 0์ด ์๋ ๋ฌธ์์ด์ ์ถ๊ฐํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฝ๋ก ์ ๊ตฌ๋ถํ๋ ๋ฌธ์์ด์ ์ถ๊ฐํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก temp์ ์ด ๊ฐ์ ์ถ๊ฐํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก ์กฐ๊ฑด๋ถ ํํ์์ "P.M."์ด ์ถ๊ฐ๋ฉ๋๋ค. ์๊ฐ(hour)์ด 12 ์๊ฐ ์ด์์ด๋ฉด ์์(temp)๋ก; ๊ทธ๋ ์ง ์์ผ๋ฉด "A.M."์ temp์ ์ถ๊ฐํฉ๋๋ค.