μλ°μ€ν¬λ¦½νΈ κ°μ²΄λ λ€μκ³Ό κ°μ΄ ν¬κ² 3κ°μ κ°μ²΄λ‘ λΆλ₯ν μ μλ€.
μλ°μ€ν¬λ¦½νΈλ 40μ¬κ°μ νμ€ λΉνΈμΈ κ°μ²΄λ₯Ό μ 곡νλλ° Math, Reflect, JSONμ μ μΈν λͺ¨λ νμ€ λΉνΈμΈ κ°μ²΄λ νλ‘ν νμ
λ©μλμ μ μ λ©μλλ₯Ό μ 곡νκ³ , μμ±μ ν¨μ κ°μ²΄κ° μλ νμ€ λΉνΈμΈ κ°μ²΄λ μ μ λ©μλλ§ μ 곡νλ€.
λ¬Έμμ΄μ΄λ μ«μ, λΆμΈλ¦¬μΈμ μμκ°μ λ§μΉ κ°μ²΄μ²λΌ λ§μΉ¨ν νκΈ°λ²μΌλ‘ μ κ·Όνλ©΄ μλ°μ€ν¬λ¦½νΈ μμ§μ μ묡μ μΌλ‘ μ°κ΄λ κ°μ²΄λ₯Ό μμ±νμ¬ μμ±λ κ°μ²΄λ‘ νλ‘νΌν°μ μ κ·Όνκ±°λ λ©μλλ₯Ό νΈμΆνκ³ λ€μ μμκ°μΌλ‘ λλλ¦°λ€. μ΄μ²λΌ λ¬Έμμ΄, μ«μ, λΆμΈλ¦¬μΈ κ°μ λν΄ κ°μ²΄μ²λΌ μ κ·Όνλ©΄ μμ±λλ μμ κ°μ²΄λ₯Ό λνΌκ°μ²΄λΌ νλ€.
λνΌ κ°μ²΄μ μ²λ¦¬κ° μ’
λ£λλ©΄ λνΌ κ°μ²΄μ [[StringData]] λ΄λΆ μ¬λ‘―μ ν λΉλ μμκ°μΌλ‘ μλμ μν, μ¦ μλ³μκ° μμκ°μ κ°λλ‘ λλλ¦¬κ³ λνΌ κ°μ²΄λ κ°λΉμ§ 컬λ μ
μ λμμ΄ λλ€.
μ μ κ°μ²΄λ μ½λκ° μ€νλκΈ° μ΄μ μ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ μ΄λ€ κ°μ²΄λ³΄λ€λ λ¨Όμ μμ±λλ νΉμν κ°μ²΄μ΄λ©°, μ΄λ€ κ°μ²΄μλ μνμ§ μμ μ΅μμ κ°μ²΄λ€.
// μ μ νλ‘νΌν°λ windowλ₯Ό μλ΅νκ³ μ°Έμ‘°ν μ μλ€.
console.log(window.Infinity === Infinity); // true
// μμ 무νλ
console.log(3/0); // Infinity
// μμ 무νλ
console.log(-3/0); // -Infinity
// Infinityλ μ«μκ°μ΄λ€.
console.log(typeof Infinity); // number
console.log(window.NaN); // NaN
console.log(Number('xyz')); // NaN
console.log(1 * 'string'); // NaN
console.log(typeof NaN); // number
console.log(window.undefined); // undefined
var foo;
console.log(foo); // undefined
console.log(typeof undefined); // undefined
// ννμμΈ λ¬Έ
eval('1 + 2;'); // -> 3
// ννμμ΄ μλ λ¬Έ
eval('var x = 5;'); // -> undefined
// eval ν¨μμ μν΄ λ°νμμ λ³μ μ μΈλ¬Έμ΄ μ€νλμ΄ x λ³μκ° μ μΈλμλ€.
console.log(x); // 5
// κ°μ²΄ 리ν°λ΄μ λ°λμ κ΄νΈλ‘ λλ¬μΌλ€.
const o = eval('({ a: 1 })');
console.log(o); // {a: 1}
// ν¨μ 리ν°λ΄μ λ°λμ κ΄νΈλ‘ λλ¬μΌλ€.
const f = eval('(function() { return 1; })');
console.log(f()); // 1
// μΈμκ° μ νμμ΄λ©΄ trueλ₯Ό λ°ννλ€.
isFinite(0); // -> true
isFinite(2e64); // -> true
isFinite('10'); // -> true: '10' β 10
isFinite(null); // -> true: null β 0
// μΈμκ° λ¬΄νμ λλ NaNμΌλ‘ νκ°λλ κ°μ΄λΌλ©΄ falseλ₯Ό λ°ννλ€.
isFinite(Infinity); // -> false
isFinite(-Infinity); // -> false
// μΈμκ° NaNμΌλ‘ νκ°λλ κ°μ΄λΌλ©΄ falseλ₯Ό λ°ννλ€.
isFinite(NaN); // -> false
isFinite('Hello'); // -> false
isFinite('2005/12/12'); // -> false
// μ«μ
isNaN(NaN); // -> true
isNaN(10); // -> false
// λ¬Έμμ΄
isNaN('blabla'); // -> true: 'blabla' => NaN
isNaN('10'); // -> false: '10' => 10
isNaN('10.12'); // -> false: '10.12' => 10.12
isNaN(''); // -> false: '' => 0
isNaN(' '); // -> false: ' ' => 0
// λΆλ¦¬μΈ
isNaN(true); // -> false: true β 1
isNaN(null); // -> false: null β 0
// undefined
isNaN(undefined); // -> true: undefined => NaN
// κ°μ²΄
isNaN({}); // -> true: {} => NaN
// date
isNaN(new Date()); // -> false: new Date() => Number
isNaN(new Date().toString()); // -> true: String => NaN
// λ¬Έμμ΄μ μ€μλ‘ ν΄μνμ¬ λ°ννλ€.
parseFloat('3.14'); // -> 3.14
parseFloat('10.00'); // -> 10
// 곡백μΌλ‘ ꡬλΆλ λ¬Έμμ΄μ 첫 λ²μ§Έ λ¬Έμμ΄λ§ λ³ννλ€.
parseFloat('34 45 66'); // -> 34
parseFloat('40 years'); // -> 40
// 첫 λ²μ§Έ λ¬Έμμ΄μ μ«μλ‘ λ³νν μ μλ€λ©΄ NaNμ λ°ννλ€.
parseFloat('He was 40'); // -> NaN
// μλ€ κ³΅λ°±μ 무μλλ€.
parseFloat(' 60 '); // -> 60
// λ¬Έμμ΄μ μ μλ‘ ν΄μνμ¬ λ°ννλ€.
parseInt('10'); // -> 10
parseInt('10.123'); // -> 10
// 10'μ 10μ§μλ‘ ν΄μνκ³ κ·Έ κ²°κ³Όλ₯Ό 10μ§μ μ μλ‘ λ°ννλ€
parseInt('10'); // -> 10
// '10'μ 2μ§μλ‘ ν΄μνκ³ κ·Έ κ²°κ³Όλ₯Ό 10μ§μ μ μλ‘ λ°ννλ€
parseInt('10', 2); // -> 2
// '10'μ 8μ§μλ‘ ν΄μνκ³ κ·Έ κ²°κ³Όλ₯Ό 10μ§μ μ μλ‘ λ°ννλ€
parseInt('10', 8); // -> 8
// '10'μ 16μ§μλ‘ ν΄μνκ³ κ·Έ κ²°κ³Όλ₯Ό 10μ§μ μ μλ‘ λ°ννλ€
parseInt('10', 16); // -> 16
κΈ°μλ₯Ό μ§μ νμ¬ 10μ§μ μ«μλ₯Ό ν΄λΉ κΈ°μμ λ¬Έμμ΄λ‘ λ³ννμ¬ λ°ννκ³ μΆμ λλ Number.prototype.toString λ©μλλ₯Ό μ¬μ©νλ€.const x = 15;
// 10μ§μ 15λ₯Ό 2μ§μλ‘ λ³ννμ¬ κ·Έ κ²°κ³Όλ₯Ό λ¬Έμμ΄λ‘ λ°ννλ€.
x.toString(2); // -> '1111'
// λ¬Έμμ΄ '1111'μ 2μ§μλ‘ ν΄μνκ³ κ·Έ κ²°κ³Όλ₯Ό 10μ§μ μ μλ‘ λ°ννλ€
parseInt(x.toString(2), 2); // -> 15
// 10μ§μ 15λ₯Ό 8μ§μλ‘ λ³ννμ¬ κ·Έ κ²°κ³Όλ₯Ό λ¬Έμμ΄λ‘ λ°ννλ€.
x.toString(8); // -> '17'
// λ¬Έμμ΄ '17'μ 8μ§μλ‘ ν΄μνκ³ κ·Έ κ²°κ³Όλ₯Ό 10μ§μ μ μλ‘ λ°ννλ€
parseInt(x.toString(8), 8); // -> 15
// 10μ§μ 15λ₯Ό 16μ§μλ‘ λ³ννμ¬ κ·Έ κ²°κ³Όλ₯Ό λ¬Έμμ΄λ‘ λ°ννλ€.
x.toString(16); // -> 'f'
// λ¬Έμμ΄ 'f'λ₯Ό 16μ§μλ‘ ν΄μνκ³ κ·Έ κ²°κ³Όλ₯Ό 10μ§μ μ μλ‘ λ°ννλ€
parseInt(x.toString(8), 8); // -> 15
// μ«μκ°μ λ¬Έμμ΄λ‘ λ³ννλ€.
x.toString(); // -> '15'
// λ¬Έμμ΄ '15'λ₯Ό 10μ§μλ‘ ν΄μνκ³ κ·Έ κ²°κ³Όλ₯Ό 10μ§μ μ μλ‘ λ°ννλ€
parseInt(x.toString()); // -> 15
// μμ ν URI
const uri = 'http://example.com?name=μ΄μ
λͺ¨&job=programmer&teacher';
// encodeURI ν¨μλ μμ ν URIλ₯Ό μ λ¬λ°μ μ΄μ€μΌμ΄ν μ²λ¦¬λ₯Ό μν΄ μΈμ½λ©νλ€.
const enc = encodeURI(uri);
console.log(enc);
// http://example.com?name=%EC%9D%B4%EC%9B%85%EB%AA%A8&job=programmer&teacher
const uri = 'http://example.com?name=μ΄μ
λͺ¨&job=programmer&teacher';
// encodeURI ν¨μλ μμ ν URIλ₯Ό μ λ¬λ°μ μ΄μ€μΌμ΄ν μ²λ¦¬λ₯Ό μν΄ μΈμ½λ©νλ€.
const enc = encodeURI(uri);
console.log(enc);
// http://example.com?name=%EC%9D%B4%EC%9B%85%EB%AA%A8&job=programmer&teacher
// decodeURI ν¨μλ μΈμ½λ©λ μμ ν URIλ₯Ό μ λ¬λ°μ μ΄μ€μΌμ΄ν μ²λ¦¬ μ΄μ μΌλ‘ λμ½λ©νλ€.
const dec = decodeURI(enc);
console.log(dec);
// http://example.com?name=μ΄μ
λͺ¨&job=programmer&teacher
// URIμ 쿼리 μ€νΈλ§
const uriComp = 'name=μ΄μ
λͺ¨&job=programmer&teacher';
// encodeURIComponent ν¨μλ μΈμλ‘ μ λ¬λ°μ λ¬Έμμ΄μ URIμ ꡬμ±μμμΈ μΏΌλ¦¬ μ€νΈλ§μ μΌλΆλ‘ κ°μ£Όνλ€.
// λ°λΌμ 쿼리 μ€νΈλ§ ꡬλΆμλ‘ μ¬μ©λλ =, ?, &κΉμ§ μΈμ½λ©νλ€.
let enc = encodeURIComponent(uriComp);
console.log(enc);
// name%3D%EC%9D%B4%EC%9B%85%EB%AA%A8%26job%3Dprogrammer%26teacher
let dec = decodeURIComponent(enc);
console.log(dec);
// μ΄μ
λͺ¨&job=programmer&teacher
// encodeURI ν¨μλ μΈμλ‘ μ λ¬λ°μ λ¬Έμμ΄μ μμ ν URIλ‘ κ°μ£Όνλ€.
// λ°λΌμ 쿼리 μ€νΈλ§ ꡬλΆμλ‘ μ¬μ©λλ =, ?, &λ₯Ό μΈμ½λ©νμ§ μλλ€.
enc = encodeURI(uriComp);
console.log(enc);
// name=%EC%9D%B4%EC%9B%85%EB%AA%A8&job=programmer&teacher
dec = decodeURI(enc);
console.log(dec);
// name=μ΄μ
λͺ¨&job=programmer&teacher
// μ μ λ³μ xλ νΈμ΄μ€ν
μ΄ λ°μνλ€.
console.log(x); // undefined
// μ μ λ³μκ° μλλΌ λ¨μ§ μ μ κ°μ²΄μ νλ‘νΌν°μΈ yλ νΈμ΄μ€ν
μ΄ λ°μνμ§ μλλ€.
console.log(y); // ReferenceError: y is not defined
var x = 10; // μ μ λ³μ
function foo () {
// μ μΈνμ§ μμ μλ³μμ κ°μ ν λΉ
y = 20; // window.y = 20;
}
foo();
// μ μΈνμ§ μμ μλ³μ yλ₯Ό μ μμμ μ°Έμ‘°ν μ μλ€.
console.log(x + y); // 30
μ μμ μμ foo ν¨μκ° νΈμΆλλ©΄ μλ°μ€ν¬λ¦½νΈ μμ§μ y λ³μμ κ°μ ν λΉνκΈ° μν΄ λ¨Όμ μ€μ½ν 체μΈμ ν΅ν΄ μ μΈλ λ³μμΈμ§ νμΈνλ€. μ΄λ foo ν¨μμ μ€μ½νμ μ μ μ€μ½ν μ΄λμμλ y λ³μμ μ μΈμ μ°Ύμ μ μμΌλ―λ‘ μ°Έμ‘° μλ¬κ° λ°μνλ€. νμ§λ§ μλ°μ€ν¬λ¦½νΈ μμ§μ y = 20 μ window.y = 20μΌλ‘ ν΄μνμ¬ μ μ κ°μ²΄μ νλ‘νΌν°λ₯Ό λμ μμ±νλ€. κ²°κ΅ yλ μ μ κ°μ²΄μ νλ‘νΌν°κ° λμ΄ λ§μΉ μ μ λ³μμ²λΌ λμνλ€. μ΄λ¬ν νμμ μ묡μ μ μμ΄λΌκ³ νλ€. yλ μ μ κ°μ²΄μ νλ‘νΌν°λ‘ μΆκ°λμμ λΏμ΄μ§ λ³μκ° μλλ―λ‘ λ³μ νΈμ΄μ€ν
μ΄ λ°μνμ§ μλλ€. λν, μ μλ³μλ νλ‘νΌν°μ΄μ§λ§ delete
μ°μ°μλ‘ μμ ν μ μλ€.