λ°μ΄ν° νμ μ΄λ?
λ°μ΄ν° νμ μ κ°μ μ’ λ₯λ₯Ό λ§νλ€. μλ°μ€ν¬λ¦½νΈλ ES6κΉμ§ μ΄ 7κ°μ λ°μ΄ν° νμ μ μ 곡νκ³ , ES2020λΆν° BigIntκ° μΆκ°λμ΄ νμ¬λ μ΄ 8κ°μ λ°μ΄ν° νμ μ μ 곡νλ€.
κ΅¬λΆ | λ°μ΄ν° νμ | μ€λͺ |
μμ νμ | μ«μ νμ (number) | μ«μ, μ μμ μ€μ κ΅¬λΆ μμ΄ νλμ μ«μ νμ λ§ μ‘΄μ¬ |
λ¬Έμμ΄ νμ (string) | λ¬Έμμ΄ | |
λΆλ¦¬μΈ νμ (boolean) | λ Όλ¦¬μ μ°Έ(true)κ³Ό κ±°μ§(false) | |
undefined νμ | var ν€μλλ‘ μ μΈλ λ³μμ μ묡μ μΌλ‘ ν λΉλλ κ° | |
null νμ | κ°μ΄ μλ€λ κ²μ μλμ μΌλ‘ λͺ μν λ μ¬μ©νλ κ° | |
μ¬λ² νμ (symbol) | ES6μμ μΆκ°λ 7λ²μ§Έ νμ μΌλ‘, κ³ μ ν μλ³μ | |
BingInt νμ | 2β΅³-1λ³΄λ€ ν° μ μλ₯Ό ννν μ μλ κ° |
λ°μ΄ν° νμ μ΄ νμν μ΄μ
λ°μ΄ν° νμ μ΄ νμν μ΄μ λ κ°μ μ μ₯ν λ ν보ν΄μΌ νλ λ©λͺ¨λ¦¬ 곡κ°μ ν¬κΈ°λ₯Ό κ²°μ νκΈ° μν΄, κ°μ μ°Έμ‘°ν λ ν λ²μ μ½μ΄ λ€μ¬μΌ ν λ©λͺ¨λ¦¬ 곡κ°μ ν¬κΈ°λ₯Ό κ²°μ νκΈ° μν΄, λ©λͺ¨λ¦¬μμ μ½μ΄λ€μΈ 2μ§μλ₯Ό μ΄λ»κ² ν΄μν μ§ κ²°μ νκΈ° μν΄ νμνλ€.
μ«μ νμ
μλ°μ€ν¬λ¦½νΈλ μ μμ μ€μλ₯Ό ꡬλΆνμ§ μκ³ νλμ μ«μ νμ λ§ μ‘΄μ¬νλ€. μ«μ νμ μ κ°μ λ°°μ λ°λ 64λΉνΈ λΆλμμμ νμμ λ°λ₯Έλ€. μ¦, λͺ¨λ μλ₯Ό μ€μλ‘ μ²λ¦¬νλ€.
μ μ, μ€μ, 2μ§μ, 8μ§μ, 16μ§μ 리ν°λ΄μ λͺ¨λ λ©λͺ¨λ¦¬μ λ°°μ λ°λ 64λΉνΈ λΆλμμμ νμμ 2μ§μλ‘ μ μ₯λλ―λ‘ μ΄λ€ κ°μ μ°Έμ‘°νλ©΄ λͺ¨λ 10μ§μλ‘ ν΄μλλ€. λν μ μλ‘ ννλμ΄λ μ¬μ€μ μ€μμ΄κΈ° λλ¬Έμ, μ μλ‘ νμλλ μλΌλ¦¬ λλλλΌλ μ€μκ° λμ¬ μ μλ€.
var binary = 0b01000001;
var octal = 0o101;
var hex = 0x41;
console.log(binary); // 65
console.log(octal); // 65
console.log(hex); // 65
console.log(binary === octal); // true
console.log(octal === hex); // true
// μ μλ‘ νμλλ€ ν΄λ μ¬μ€μ μ€μ
console.log(1 === 1.0); // true
console.log(3 / 2); // 1.5
μ«μ νμ μ μΈκ°μ§ νΉλ³ν κ°
μ«μ νμ
μλ μμ 무νλλ₯Ό νννλ Infinity
μ μμ 무νλλ₯Ό νννλ -Infinity
κ·Έλ¦¬κ³ μ«μ νμ
μ΄μ§λ§, μ«μλ‘ ννλ μ μλ κ°μ μλ―Ένλ μ°μ μ°μ° λΆκ°(not-a-number) NaN
μ΄ μλ€. μλ°μ€ν¬λ¦½νΈλ λμλ¬Έμλ₯Ό ꡬλ³νκΈ° λλ¬Έμ λ°λμ NaN
μΌλ‘λ§ μ¨μΌνλ€.
console.log(10/0); // Infinity
console.log(-10/0); // -Infinity
console.log(1 * 'String') //NaN
BigInt νμ
κΈ°μ‘΄ μ«μ νμ μ μ μ λ²μκ° -2β΅³ ~ 2β΅³ μ¬μ΄λ‘ μ νλμλ€. BigInt νμ μ μ΄ μ νμ μ΄κ³Όνλ μ μλ₯Ό μ νν μ²λ¦¬ν μ μλλ‘ μ€κ³λμλ€.
BigInt κ°μ BigInt()
μμ±μ νΉμ μ«μ λ€μ n
μ λΆμ΄λ BigInt 리ν°λ΄μ μ¬μ©νμ¬ μμ±ν μ μλ€.
// 1. BigInt μμ±μ μ¬μ©
const bigInt1 = BigInt(123456789012345678901234567890);
console.log(bigInt1); // μΆλ ₯: 123456789012345678901234567890n
// 2. μ«μ λ€μ 'n' λΆμ΄κΈ°
const bigInt2 = 123456789012345678901234567890n;
console.log(bigInt2); // μΆλ ₯: 123456789012345678901234567890n
BigInt νμ κ³Ό μ«μ νμ μ μμ°ν μλ‘ λ€λ₯Έ νμ μ΄λ©°, νΌμ©ν΄μ μ°μ°μ ν μ μκ³ λͺ μμ μΌλ‘ νμ λ³νμ΄ νμνλ€.
λ¬Έμμ΄ νμ
λ¬Έμμ΄ νμ
μ ν
μ€νΈ λ°μ΄ν°λ₯Ό λνλ΄λλ° μ¬μ©νλ©°, 0κ° μ΄μμ 16λΉνΈ μ λμ½λ λ¬Έμ(UTF-16)μ μ§ν©μΌλ‘ μ μΈκ³ λλΆλΆμ λ¬Έμλ₯Ό ννν μ μλ€. λ¬Έμμ΄ λ¦¬ν°λ΄μ μμ λ°μ΄ν(' '
), ν° λ°μ΄ν(" "
), λ°±ν±(` `
)μΌλ‘ ν
μ€νΈλ₯Ό κ°μΌλ€.
var string;
string = 'λ¬Έμμ΄';
string = "λ¬Έμμ΄";
string = λ¬Έμμ΄;
ν νλ¦Ώ 리ν°λ΄
ES6λΆν° λ°±ν±(``
)μ μ¬μ©νλ ν
νλ¦Ώ 리ν°λ΄μ΄λΌλ μλ‘μ΄ λ¬Έμμ΄ νκΈ°λ²μ΄ λμ
λμλ€. ν
νλ¦Ώ 리ν°λ΄μ λ°νμμ μΌλ° λ¬Έμμ΄λ‘ λ³νλμ΄ μ²λ¦¬λλ€.
λ©ν°λΌμΈ λ¬Έμμ΄
ν νλ¦Ώ 리ν°λ΄μ μΌλ° λ¬Έμμ΄ λ΄μμ νμ©λμ§ μλ μ€λ°κΏ(κ°ν)μ΄ κ°λ₯νλ€. μΌλ° λ¬Έμμ΄ λ΄μμ μ€λ°κΏ, ν λ±μ 곡백μ νννκΈ° μν΄μλ μλμ κ°μ΄ μ΄μ€μΌμ΄ν μνμ€λ₯Ό μ¬μ©ν΄μΌ νλ€.
var template = '<ul>\n\t<li><a href="#">Home</a></li>\n</ul>';
νμ§λ§ λ°±ν±μ μ¬μ©ν ν νλ¦Ώ ν°λ¬λ΄ λ΄μμλ μ΄μ€μΌμ΄ν μνμ€ μμ΄λ μ€λ°κΏμ΄ νμ©λλ©°, λͺ¨λ 곡백λ κ·Έλλ‘ μ μ©λλ€.
var template = `<ul>
<li><a href="#">Home</a></li>
</ul>`;
ννμ μ½μ
λ¬Έμμ΄μ λ¬Έμμ΄ μ°μ°μλ₯Ό μ¬μ©ν΄ μ°κ²°ν μ μλ€. +
μ°μ°μλ νΌμ°μ°μ μ€ νλ μ΄μμ΄ λ¬Έμμ΄μΈ κ²½μ° λ§μ
μ°μ°μκ° μλ λ¬Έμμ΄ μ°κ²° μ°μ°μλ‘ λμνλ€.
var first = 'Eun-kyung';
var last = 'Jung';
console.log('My name is ' + first + ' ' + last + '.'); // My name is Eun-kyung Jung.
ν νλ¦Ώ 리ν°λ΄ λ΄μμλ λ¬Έμμ΄ μ°κ²° μ°μ°μ μμ΄λ κ°λ¨ν λ¬Έμμ΄μ μ½μ ν μ μλ€. μμ μμ μμ μΆλ ₯λ¬Έμ ν νλ¦Ώ 리ν°λ΄λ‘ λ°κΏλ³΄λ©΄ μλμ κ°λ€.
console.log(`My name is ${first} ${last}.`); // My name is Eun-kyung Jung.
μ΄μ²λΌ ννμμ ${}
λ‘ κ°μΈλ©΄ ν
νλ¦Ώ 리ν°λ΄ λ΄μ ννμμ μ½μ
ν μ μκ² λλ€. μ΄λ, ννμμ νκ° κ²°κ³Όκ° λ¬Έμμ΄μ΄ μλλλΌλ λ¬Έμμ΄λ‘ νμ
μ΄ κ°μ λ³νλλ€.
console.log(`10 + 20 = ${10 + 20}`); // 10 + 20 = 30
νκ·Έλ ν νλ¦Ώ
νκ·Έλ ν νλ¦Ώμ ν νλ¦Ώ 리ν°λ΄μ ν¨μμ²λΌ νΈμΆν μ μλ κΈ°λ₯μ΄λ€. νκ·Έλ ν νλ¦Ώμ ν΅ν΄ ν νλ¦Ώ 리ν°λ΄μ ν¨μμ μ λ¬νκ³ , ν¨μμμ μ΄λ₯Ό μ²λ¦¬νλλ‘ ν μ μλ€.
νκ·Έλ ν νλ¦Ώμ νκ·Έ ν¨μμ ν νλ¦Ώ 리ν°λ΄μ΄ κ²°ν©λ ννμ΄λ€.
function foo(strings, ...values) {
console.log(strings); // λ¬Έμμ΄ λ°°μ΄
console.log(values); // ννμλ€μ λ°°μ΄
}
let name = 'EunKyung Jung';
let age = 25;
foo`Hello, my name is ${name} and I am ${age} years old.`; /* μΆλ ₯ [ 'Hello, my name is ', ' and I am ', ' years old.' ] [ 'EunKyung Jung', 25 ] */
μμ μμ μμ νκ·Έ ν¨μμΈ foo
ν¨μλ ν
νλ¦Ώ 리ν°λ΄μ΄ μ€νλ λ νΈμΆλλ€. strings
λ ν
νλ¦Ώ 리ν°λ λ΄μ ν
μ€νΈ λΆλΆλ€μ λ°°μ΄λ‘ λ°κ³ , values
λ ${}
λ‘ κ°μΈμ§ ννμλ€μ λ°°μ΄λ‘ λ°λλ€. κ²°κ³Όμ μΌλ‘ ${name}
κ³Ό ${age}
λ values
λ°°μ΄λ‘, λλ¨Έμ§ λ¬Έμμ΄ λΆλΆμ string
λ°°μ΄λ‘ λ€μ΄κ°λ€.
νκ·Έλ ν νλ¦Ώμ μλμ κ°μ΄ νμ©ν μλ μλ€.
// 1. λ¬Έμμ΄ μ‘°μ
function upperCase(strings, ...values) {
let result = strings[0];
values.forEach((value, index) => {
result += value.toUpperCase() + strings[index + 1];
});
return result;
}
let name = "EunKyung Jung";
let greeting = upperCase`Hello, my name is ${name};`
console.log(greeting); // "Hello, my name is EUNKYUNG JUNG"
// 2. ννμ νκ° ν κ° μ²λ¦¬
function evaluate(strings, ...values) {
let result = strings[0];
values.forEach((value, index) => {
result += value * 2 + strings[index + 1]; // κ°μ 2λ₯Ό κ³±ν΄ μ²λ¦¬
});
return result;
}
let a = 5;
let b = 3;
let result = evaluate`The result of ${a} and ${b} is: `;
console.log(result); // "The result of 5 and 3 is: 10 6"
λΆλ¦¬μΈ νμ
λΆλ¦¬μΈ νμ
μ κ°μ λ
Όλ¦¬μ μ°Έ, κ±°μ§μ λνλ΄λ true
μ false
λΏμ΄λ€. λΆλ¦¬μΈ νμ
μ 쑰건문μμ μμ£Ό μ¬μ©νλ€.
var foo = true;
var bar = false;
if (foo) {
console.log("Hello"); // Hello μΆλ ₯λ¨
}
if (bar) {
console.log("Hello"); // μΆλ ₯λμ§ μμ
}
undefined νμ & null νμ
undefined νμ
μ κ°μ undefined
κ° μ μΌνκ³ , null νμ
μ κ°μ null
μ΄ μ μΌνλ€.
var
ν€μλλ‘ μ μΈν λ³μλ μ묡μ μΌλ‘ undefined
λ‘ μ΄κΈ°νλλ€. μ΄λ¬ν κ²½μ°μ²λΌ undefined
λ κ°λ°μκ° μλμ μΌλ‘ ν λΉνκΈ° μν κ°μ΄ μλλΌ μλ°μ€ν¬λ¦½νΈ μμ§μ΄ λ³μλ₯Ό μ΄κΈ°νν λ μ¬μ©νλ κ°μ΄λ€. λ³μλ₯Ό μ°Έμ‘°νμ λ undefined
κ° λ°νλλ€λ©΄, μ°Έμ‘°ν λ³μκ° μ΄κΈ°νλμ§ μμ λ³μλΌλ κ²μ μ μ μλ€. λ°λΌμ, κ°λ°μκ° μλμ μΌλ‘ λ³μμ undefined
λ₯Ό ν λΉνλ κ²μ κΆμ₯λμ§ μλλ€.
νμ§λ§ κ°λ°μκ° μλμ μΌλ‘ λ³μμ 'κ°μ΄ μμ'μ λͺ
μνκ³ μΆμ μ μλ€. μ΄λ΄ λ null
μ ν λΉνλ©΄ λλ€. ν¨μκ° μ ν¨ν κ°μ λ°νν μ μλ κ²½μ°μλ λͺ
μμ μΌλ‘ null
μ λ°ννκΈ°λ νλ€. μλ₯Ό λ€μ΄ HTML μμλ₯Ό κ²μν΄ λ°ννλ document.querySelector
λ©μλλ 쑰건μ λΆν©νλ HTML μμλ₯Ό κ²μν μ μλ κ²½μ° μλ¬ λμ null
μ λ°ννλ€.
μ¬λ² νμ
μ¬λ² νμ μ ES6μμ μΆκ°λ νμ μΌλ‘, λ€λ₯Έ κ°κ³Ό μ€λ³΅λμ§ μλ μ μΌλ¬΄μ΄ν κ°μ΄λ€. λ°λΌμ μ£Όλ‘ μ΄λ¦μ΄ μΆ©λν μνμ΄ μλ κ°μ²΄μ μ μΌν νλ‘νΌν° ν€λ₯Ό λ§λ€κΈ° μν΄ μ¬μ©λλ€.
μ¬λ² μ΄μΈμ μμ κ°μ 리ν°λ΄μ ν΅ν΄ μμ±νμ§λ§, μ¬λ²μ Symbol
ν¨μλ₯Ό νΈμΆν΄ μμ±νλ€. μ΄λ μμ±λ μ¬λ² κ°μ μΈλΆμ λ
ΈμΆλμ§ μκ³ , μ λ μ€λ³΅λμ§ μλ κ°μ΄ λλ€.
var symbol1 = Symbol('prop');
var symbol2 = Symbol('prop');
// symbol1κ³Ό symbol2λ κ°μ μ€λͺ
'prop'μ κ°κ³ μμ§λ§ μ ν λ€λ₯Έ κ°μΌλ‘ μ·¨κΈλ¨
let obj = {
[symbol1]: 'value1', // μ¬λ²μ κ°μ²΄μ ν€λ‘ μ¬μ©λ λ λ¬Έμμ΄λ‘ μλ λ³νλμ§ μμΌλ―λ‘ λκ΄νΈ ννλ² μ¬μ©
[symbol2]: 'value2'
};
// μ¬λ² ν€λ μΈλΆμμ μ§μ νμΈμ΄ λΆκ°λ₯
for (var key in obj) {
console.log(key); // μ무κ²λ μΆλ ₯λμ§ μλλ€.
}
// toString()μΌλ‘ κ·Έ κ°μ΄ μΌλ°μ μΈ λ¬Έμμ΄μ΄ μλ, μ¬λ²μ μ€λͺ
νλ λ¬Έμμ΄μ΄ μΆλ ₯λ¨
console.log(symbol1.toString()); // μΆλ ₯: "Symbol(prop)";
κ°μ²΄ νμ
μλ°μ€ν¬λ¦½νΈμ λ°μ΄ν° νμ μ ν¬κ² μμ νμ κ³Ό κ°μ²΄ νμ μΌλ‘ λΆλ₯νλ λ§νΌ, μμ νμ κ³Ό κ°μ²΄ νμ μ κ·Όλ³Έμ μΌλ‘ λ€λ₯΄λ€. μ€μν κ²μ μλ°μ€ν¬λ¦½νΈλ κ°μ²΄ κΈ°λ° μΈμ΄λ‘, μλ°μ€ν¬λ¦½νΈλ₯Ό μ΄λ£¨κ³ μλ κ±°μ λͺ¨λ κ²μ΄ κ°μ²΄λΌλ κ²μ΄λ€.
κ°μ²΄λ μμ±(νλ‘νΌν°)κ³Ό ν¨μ(λ©μλ)μ μ§ν©μ΄λ€. κ°μ²΄λ κ°μ²΄ μμ±μ ν¨μ new Object()
λ₯Ό ν΅ν΄ μμ±ν μ μλ€.
var user = new Object();
user.name = "EunKyung Jung";
user.age = 25;
μ΄λ κ² μμ±λ κ°μ²΄λ ν€(μμ±, property)-κ°(value) μμΌλ‘ λ°μ΄ν°λ₯Ό μ μ₯νλ€. μμ μμ μμ name
, age
λ ν€, "EunKyung Jung"
, 25
λ κ°μ΄λ€. κ°κ°μ ν€ κ³ μ νλ€.
μ¬μ©μ μ μ μμ±μ ν¨μλ₯Ό ν΅ν΄μλ κ°μ²΄λ₯Ό μμ±ν μ μλ€.
function User() { // μ¬μ©μ μ μ μμ±μ ν¨μ
this.name = "EunKyung Jung";
this.age = 25;
}
var user = new User();
κ°μ₯ λ§μ΄ μ°μ΄λ κ°μ²΄ μμ± λ°©λ²μ κ°μ²΄ 리ν°λ΄ λ°©μμ΄λ€. {}
μμ ν€-κ° μμ μ§μ μμ±νλ€.
var user = {
name: "EunKyung Jung",
age: 25,
};
κ°μ²΄μ μμ±μ μ κ·Όνλ λ°©λ²μ μ νκΈ°λ²κ³Ό λκ΄νΈ νκΈ°λ²μ΄ μλ€.
console.log(user.name); // EunKyung Jung
console.log(user["name"]); // EunKyung Jung
// λ³μμ ν€λ₯Ό ν λΉν΄μ λκ΄νΈ νκΈ°λ²μ μ¬μ©ν΄ μμ±μ μ κ·Ό κ°λ₯
var key = age;
console.log(user[age]); // 25
μΌλ°μ μΈ κ°μ²΄μ ννλ₯Ό κ°μΆ κ°μ²΄ λΏλ§ μλλΌ, λ°°μ΄, ν¨μλ κ°μ²΄μ μΌμ’ μ΄λ€.
μ°Έκ³
- μ μ
- μ΄μ λͺ¨
- μΆν
- μν€λΆμ€
- μΆνμΌ
- 2020.09.25