2. ๊ฐ
๊ฐ
์๋ฐ์คํฌ๋ฆฝ์์ ๊ฐ์ ์ค์ํ ์์๋ผ ์๊ฐํ๋ค. ์ด์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ ํ์ ์ ๊ฐ์ผ๋ก ์ถ๋ก ํ๊ธฐ ๋๋ฌธ์ด๊ณ ์ด๊ฒ์ ๋ฐ๋ผ ๋ง์ ๋ฌธ๋ฒ์ด ํ์์ด ๋๋ค๊ณ ์๊ฐ ํ๋ค. ๋ฐ๋ผ์ ๊ฐ ๊ฐ๊ณผ ํ์ ์ด ์ด๋ค์์ผ๋ก ์ฌ์ฉ๋์ด์ผํ๋์ง ํ์ ํ ์ ์์๋ค.
๊ฐ ์ฐ์
๋ฐฐ์ด
๊ธฐ๋ณธ์ ์ธ ์ฐ์์ ํ ๋ญ๊ท์ง์ ๋์ผ
ํฌ๊ธฐ ์ง์ ์์ด ๋์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ์๋ ๋์ด๋จ
delete ์ฐ์ฐ์๋ฅผ
ํตํด ์ญ์ ๊ฐ๋ฅ-> ๋ฐ์ดํฐ ๋น๊ฒ๋จ. ๊ธธ์ด๋ ๊ทธ๋๋ก ์ธ๊ฑธ๋ก ๋ด์๋ ๊ณต๊ฐ์ ์ฐจ์งํ๋๊ฒ ๊ฐ์
ํ ๋น ์๋ ์ค๊ฐ์ ๋ถ๋ถ์
undefined
๋ฌธ์์ด
์๋ฐ์คํฌ๋ฆฝํธ์์ ์์ํ์ ์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๊ฐ์ฃผ
์ ์ฌ๋ฐฐ์ด : ๋ฐฐ์ด์ ์๋์ง๋ง ๋ฐฐ์ด๊ฐ์ด ์์ง์ผ ์ ์๋ ๊ตฌ์กฐ
์ซ์
๊ธฐ๋ณธ์ ์ผ๋ก ์ ์, ์ค์ ๊ตฌ๋ถ์์ด ์ฌ์ฉ ๊ฐ๋ฅ
์ซ์๊ฐ ์ปค์ง๋ฉด ์ง์๋ฒ์น์ธ๊ฐ? ์ ์ฉ e๋ก ์์ํ๋ ๊ฑฐ
์์ซ์ 0 ์๋ต
๊ฐ๊น์ด์ ๋ฐ์ฌ๋ฆผ
์ง๋ฒ ํ๊ธฐ : 0x, 0o, 0b ์ฒ๋ผ ์๋ฌธ์๋ก ํ๊ธฐํ๋ ์ต๊ด๋ค์ด๊ธฐ
null
๋น๊ฐ
๊ฐ์ด ์์์ง๋ง ํ์ฌ ๊ฐ์ด ์๋ ์ํ
undefined
ํ ๋น์๋ ๊ฐ
์์ ํ ๋น์กฐ์ฐจ ์๋ ์ํ
๊ฐ vs ๋ ํผ๋ฐ์ค
ํฌ์ธํฐ๋ ๊ฐ๋ ์ด ์์
๊ธฐ๋ณธ์ ์ผ๋ก ์๋ฐ์ ๊ฐ์ ๊ฐ๋ ์ผ๋ก ์๊ฐํ๋ฉด ๋ ๋ฏ
๊ฐ / ๊ฐ์ฒด ๊ด๋ จ
์ฃผ์ ๊ฐ๋
๋ฐ ๋ด์ฉ
๋ฐฐ์ด, ๋ฌธ์์ด, ์ซ์ ์ ์ฌ์ฉ์ด ์ค์ undefined, null
์ ์ฌ๋ฐฐ์ด ๊ฐ๋
๋ํ์ ์ธ DOM ์์ ๋ฆฌ์คํธ
์ฃผ์ ์ฌํญ
๋ฐฐ์ด ์ธ๋ฑ์ค์
์ผ๋ฐ๋ฌธ์์ด
->ํ๋กํผํฐ๋ก
์ค์ ๋จvar a = []; a[0] = 1; a["foobar"] = 2; // ํ๋กํผํฐ๋ก ๋ค์ด๊ฐ console.log(a); // [ 1, foobar: 2 ] console.log(a.length); // 1 console.log(a.foobar); // 2 console.log(a[1]); // undefined
๋ฐฐ์ด ์ธ๋ฑ์ค
๋ฌธ์์ด์ซ์
->์ธ๋ฑ์ค๋ก ์ธ์
var b = []; b["13"] = 42; // b[13] = 42์ ๋์ผ : 0~12 undefined ๋ก ์ค์ console.log(b); // [ <13 empty items>, 42 ] console.log(b.length); // 14
์ซ์ ๋ง์ ๋บ์
// ์ ํํ ๊ฐ์ด ์๋์ด var a = 0.1; var b = 0.2; console.log(a + b) // 0.3 ? 0.300000000004 : ์ค์ฐจ๋ฐ์
NaN ๋น๊ต
var a = 2 / "foo"; // NaN console.log(a == NaN); console.log(a == NaN); // false console.log(a === NaN); // false ๊ฐ์๋ฆ..? console.log(isNaN(a)); // true console.log(isNaN("foo")); // true : ์ซ์๋ง ์ฒดํฌํ๋ ๊ฐ๋ ์ด ์๋.. ๋ฒ๊ทธ์ฑ ๋น์ง๊ด์ console.log(Number.isNaN("foo"));; // false : es6 NaN๋ง ์ฒดํฌ
-0, +0, +-Infinity
var a = 0 / -3; var b = 0 / 3; console.log(a); // -0 console.log(b); // 0 console.log(a == b); // true console.log(a.toString()); // 0 console.log(String(a)); // 0 console.log(JSON.stringify(a)); // 0 console.log(+"-0"); // -0 console.log(Number("-0")); // -0 console.log(JSON.parse("-0")); // -0 // -0 ์ฒดํฌ๋ ์ด๋ฐ ์ถ๊ฐ ์์ ์ด ํ์ํจ function isNegZero(n) { n = Number(n); return n === 0 && (1/n === -Infinity); } console.log(isNegZero(-0)); console.log(isNegZero(0 / -3)); console.log(isNegZero(-0 * 11)); console.log(isNegZero(0));
๊ทธ์ธ ๋น ํธ๋ฆฐ ๋ถ๋ถ ์ ๋ฆฌ
์ ์ ์ ํํ ํํ
isSafeInteger() / isInteger()
void ์ฐ์ฐ์
์ด๋ค ๊ฐ์ด๋ ๋ฌดํจ๋ก ๋ง๋ฌ : undefined
NaN
์ ํจํ์ง ์์ ์ซ์ / ์คํจํ ์ซ์ / ๋ชน์ธ ๋ ์
NaN์ฒดํฌ๋ es6(
Number.isNaN
์ผ๋ก ์ฒดํฌํด์ผํจ)
-0, +0 ๊ฐ๋
๋ฒกํฐ๋ผ๋ด์ผํ๋ค. ์ฆ ํ๋ง๋ ๋ฐฉํฅ์ฑ์ ๋ํ๋. ํ๋ฉด์ ์ ๋๋ฉ์ด์ ๋ฑ ํํ์ด ํ์ํ ๊ฒฝ์ฐ?
Obejct.is()
๋๊ฐ์ ๋น๊ตํ๋ ๋ฉ์๋
```javascript
var a = 2 / "foo"; // NaN
var b = -3 * 0; // -0
console.log(Object.is(a, NaN)); // true console.log(Object.is(b, -0)); // true console.log(Object.is(b, 0)); // false
```
ํ
์คํธ ์ฝ๋
(function () {
var a = [];
a[0] = 2;
a[2] = 3; // a[1] = ? -> undefined
console.log(a);
console.log(a.length); // 3
delete a[0]; // undefined : ๊ณต๊ฐ์ ์ฐจ์ง
console.log(a);
console.log(a.length); // 3
console.log(typeof a[0]);
console.log(typeof a[1]);
console.log(typeof a[2]);
console.log("==========");
var a = [];
a[0] = 1;
a["foobar"] = 2; // ํ๋กํผํฐ๋ก ๋ค์ด๊ฐ
console.log(a); // [ 1, foobar: 2 ]
console.log(a.length); // 1
console.log(a.foobar); // 2
console.log(a[1]); // undefined
var b = [];
b["13"] = 42; // b[13] = 42์ ๋์ผ : 0~12 undefined ๋ก ์ค์
console.log(b); // [ <13 empty items>, 42 ]
console.log(b.length); // 14
console.log("===== ๋ฐฐ์ด =====");
var a = "foo";
var b = ["f", "o", "o"];
console.log(a.length);
console.log(b.length);
console.log(a.indexOf("o"));
console.log(b.indexOf("o"));
var c = a.toUpperCase();
console.log(c);
console.log(a === c);
b.push("!");
console.log(b);
var c = Array.prototype.join.call(a, "-");
console.log(c);
var d = Array.prototype.map.call(a, function (v) {
return v.toUpperCase() + ".";
}).join("");
console.log(d);
console.log(a.split("").reverse().join(""));
console.log("===== ์ซ์ ======");
var a = 0.2;
var b = 0.3;
console.log(b - a); // ์ ํํ 0.1 ์๋์ด
console.log(b + a); // ์ ํํ 0.1 ์๋์ด
console.log(Number.isInteger(42));
console.log(Number.isInteger(42.00));
console.log(Number.isSafeInteger(42.00));
console.log("===== void ์ฐ์ฐ์ =====");
var a = 42;
console.log(void a, a); // a์๋ ์ํฅ์ ์๋ฏธ์นจ
console.log("======= NaN =========");
var a = 2 / "foo"; // NaN
console.log(a);
console.log(typeof a);
console.log(NaN);
console.log(typeof NaN);
console.log(a == NaN); // false
console.log(a === NaN); // false ๊ฐ์๋ฆ..?
console.log(isNaN(a)); // true
console.log(isNaN("foo")); // true
console.log(Number.isNaN("foo"));; // false
console.log("======= -0, +0 =========");
var a = 0 / -3;
var b = 0 / 3;
console.log(a); // -0
console.log(b); // 0
console.log(a == b); // true
console.log(a.toString()); // 0
console.log(String(a)); // 0
console.log(JSON.stringify(a)); // 0
console.log(+"-0");
console.log(Number("-0"));
console.log(JSON.parse("-0"));
function isNegZero(n) {
n = Number(n);
return n === 0 && (1/n === -Infinity);
}
console.log(isNegZero(-0));
console.log(isNegZero(0 / -3));
console.log(isNegZero(-0 * 11));
console.log(isNegZero(0));
console.log("======= Object.is() ========");
var a = 2 / "foo"; // NaN
var b = -3 * 0; // -0
console.log(Object.is(a, NaN)); // true
console.log(Object.is(b, -0)); // true
console.log(Object.is(b, 0)); // false
var a = [1, 2, 3];
function testArr(x) {
x.push(4);
x.length = 0;
x.push(4, 5, 6, 7);
}
testArr(a);
console.log(a);
console.log(a.slice());
})();
Last updated
Was this helpful?