π λ³Έ ν¬μ€νΈλ 'λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive' λμλ₯Ό λ°νμΌλ‘ ν΅μ¬ κ°λ λ° λ΄μ©μ μμ½ν ν¬μ€νΈμ λλ€.
06μ₯ λ°μ΄ν° νμ
λ°μ΄ν° νμ μ κ°μ μ’ λ₯λ₯Ό μλ―Έν©λλ€. JSμ λͺ¨λ κ°μ λ°μ΄ν° νμ μ κ°μ§κ³ μμΌλ©° JS(ES6)λ μ΄ 7κ°μ λ°μ΄ν° νμ μ μ 곡ν©λλ€. λ μ΄ 7κ°μ λ°μ΄ν° νμ μ ν¬κ² μμ νμ , κ°μ²΄ νμ 2κ°μ§λ‘ λΆλ₯ν μ μμ΅λλ€.
κ΅¬λΆ | λ°μ΄ν° νμ | μ€λͺ |
μμ νμ | μ«μ νμ number | μ«μ, μ μμ μ€μ κ΅¬λΆ μμ΄ νλμ μ«μ νμ numberλ§μ΄ μ‘΄μ¬ |
λ¬Έμμ΄ νμ string | λ¬Έμμ΄ | |
λΆλ¦¬μΈ νμ boolean | λ Όλ¦¬μ μ°Έκ³Ό κ±°μ§(true, false) | |
undefined νμ | var ν€μλλ‘ μ μΈλ κ°μ μ묡μ μΌλ‘ ν λΉλλ κ° | |
null νμ | κ°μ΄ μλ€λ κ²μ μλμ μΌλ‘ λͺ μν λ μ¬μ©νλ κ° | |
symbol νμ | ES6μμ μΆκ°λ 7λ²μ§Έ νμ | |
κ°μ²΄ νμ | κ°μ²΄, ν¨μ, λ°°μ΄ λ± |
JSλ₯Ό λΉλ‘―ν λͺ¨λ νλ‘κ·Έλλ° μΈμ΄μμ λ°μ΄ν° νμ μ μ€μν©λλ€. μλ₯Ό λ€μ΄ μ«μ νμ μ 1κ³Ό λ¬Έμμ΄ νμ μ '1'μ λΉμ·ν΄ 보μ΄μ§λ§ μ ν λ€λ₯Έ κ°μ λλ€. λμ μμ±ν λͺ©μ κ³Ό μ©λκ° λ€λ¦ λλ€. 1κ³Ό κ°μ κ²½μ°μλ μ£Όλ‘ μ°μ μ°μ°μ μνμ¬ μμ±νμ§λ§ '1'μ κ²½μ°μλ μ£Όλ‘ ν μ€νΈλ₯Ό νλ©΄μ μΆλ ₯νκΈ° μνμ¬ μμ±ν©λλ€. λ λμκ° μ΄ λμ μ μ₯μ μνμ¬ ν보ν΄μΌν λ©λͺ¨λ¦¬ 곡κ°μ ν¬κΈ°λ λ€λ₯΄λ©° μ μ₯λλ 2μ§μ κ°, ν΄μνλ λ°©μ λͺ¨λ λ€λ¦ λλ€.
6.1 μ«μ(number) νμ
Cλ Javaλ₯Ό λΉλ‘―ν λ§μ νλ‘κ·Έλλ° μΈμ΄μμλ μ μ, μ€μλ₯Ό ꡬλΆνμ¬ int, long, float, double λ±μ λ€μν μ«μ νμ μ κ°μ§κ³ μλ λ°λ©΄ JSμμλ νλμ μ«μ νμ number λ§μ κ°μ§κ³ μμ΅λλ€.
JSμμμ μ«μ νμ μ λ°°μ λ°λ(64λΉνΈ) λΆλμμμ νμμ 2μ§μλ‘ μ μ₯λ©λλ€. μ¦, λͺ¨λ μλ₯Ό μ€μλ‘ μ²λ¦¬νλ©° μ μλ§ νννκΈ° μν λ°μ΄ν° νμ μ΄ λ³λλ‘ μ‘΄μ¬νμ§ μμ΅λλ€.
λΆλμμμ μ λν μ΄ν΄κ° νμν κ²½μ° μλ ν¬μ€ν μ μ°Έκ³ νλ©΄ μ’μ κ±° κ°μ΅λλ€.
https://devocean.sk.com/blog/techBoardDetail.do?ID=165270
var binary = 0b01000001; // 2μ§μ
var octal = 0o101; // 8μ§μ
var hex = 0x41; // 16μ§μ
console.log(binary); // 65
console.log(octal); // 65
console.log(hex); // 65
console.log(binary === octal); // true
console.log(octal === hex); // true
JSμμλ λ¨ νλμ μ«μ νμ λ§μ΄ μ‘΄μ¬νκΈ° λλ¬Έμ μ μ, μ€μ, 2μ§μ, 8μ§μ λ±λ±..μ κ°κΈ° λ€λ₯Έ μ«μ 리ν°λ΄μ μ μ₯ν λ€ λ€μ μ°Έμ‘°νλ©΄ λͺ¨λ 10μ§μλ‘ ν΄μλ©λλ€(μ μ, μ€μ, 2μ§μ, 8μ§μ λ±μ ννν λ°μ΄ν° νμ μ΄ μκΈ° λλ¬Έ).
μ«μ νμ μ μΆκ°μ μΌλ‘ μΈ κ°μ§μ νΉλ³ν κ°λ ννν μ μμ΅λλ€.
- Infinity : μμ 무νλ
- -Infinity : μμ 무νλ
- NaN : μ°μ μ°μ° λΆκ°(not-a-number)
JSμμλ λμλ¬Έμλ₯Ό ꡬλ³νκΈ° λλ¬Έμ μ κ°μ ννν λ, μλͺ» νκΈ°νμ¬ μλ³μλ‘ ν΄μλμ§ μλλ‘ μ£Όμν΄μΌ ν©λλ€.
6.2 λ¬Έμμ΄ νμ
λ¬Έμμ΄ νμ μ ν μ€νΈ λ°μ΄ν°λ₯Ό λνλ΄κΈ° μνμ¬ μ¬μ©ν©λλ€.
λ¬Έμμ΄μ μμ λ°μ΄ν(''), ν° λ°μ΄ν(""), λ°±ν±(``)μΌλ‘ ν μ€νΈλ₯Ό κ°μλλ€. JSμμ κ°μ₯ μΌλ°μ μΈ νκΈ°λ²μ μμλ°μ΄νλ₯Ό μ¬μ©νλ κ²μ΄λΌκ³ ν©λλ€.
- μμ λ°μ΄νλ‘ κ°μΌ λ¬Έμμ΄ λ΄λΆμ ν° λ°μ΄νλ λ¬Έμμ΄λ‘ μΈμλ©λλ€.
- ν° λ°μ΄νλ‘ κ°μΌ λ¬Έμμ΄ λ΄λΆμ μμ λ°μ΄νλ λ¬Έμμ΄λ‘ μΈμλ©λλ€.
λ€λ₯Έ νμ μ κ°κ³Ό λ¬λ¦¬ λ¬Έμμ΄μ λ°μ΄νλ‘ κ°μΈλ μ΄μ λ ν€μλλ μλ³μ κ°μ ν ν°κ³Ό ꡬλΆνκΈ° μν΄μ μ λλ€. λ°μ΄νλ λ°±ν±μΌλ‘ κ°μΈμ§ μλ κ²½μ° JS μμ§μ μ΄λ₯Ό ν€μλλ μλ³μ κ°μ ν ν°μΌλ‘ μΈμνκ² λλ μ£Όμν΄μΌ ν©λλ€.
Cλ λ¬Έμμ΄ νμ λμ λ¬Έμμ λ°°μ΄λ‘ λ¬Έμμ΄μ νννλ©° Javaλ λ¬Έμμ΄μ κ°μ²΄λ‘ ννν©λλ€. νμ§λ§ JSμμμ λ¬Έμμ΄μ μμ νμ μ΄λ©° λ³κ²½ λΆκ°λ₯ν κ°μ λλ€.
μ΄λ λ¬Έμμ΄μ μμ±κ³Ό λμμ λ³κ²½ν μ μμμ μλ―Έν©λλ€.
6.3 ν νλ¦Ώ 리ν°λ΄
ES6λΆν° ν νλ¦Ώ 리ν°λ΄μ΄λΌκ³ νλ μλ‘μ΄ λ¬Έμμ΄ νκΈ°λ²μ΄ λμ λμμ΅λλ€. ν νλ¦Ώ 리ν°λ΄μ λ©ν°λΌμΈ λ¬Έμμ΄, ννμ μ½μ , νκ·Έλ ν νλ¦Ώ λ±μ νΈλ¦¬ν λ¬Έμμ΄ μ²λ¦¬ κΈ°λ₯μ μ 곡ν©λλ€. ν νλ¦Ώ 리ν°λ΄μ μΌλ° λ¬Έμμ΄λ‘ λ³νλμ΄ μ²λ¦¬λ©λλ€.
ν νλ¦Ώ 리ν°λ΄μ λ°μ΄νκ° μλ λ°±ν±(``)μ μ¬μ©νμ¬ ννν©λλ€.
6.3.1 λ©ν°λΌμΈ λ¬Έμμ΄
μΌλ° λ¬Έμμ΄ λ΄μμλ μ€λ°κΏ(κ°ν) νμ©λμ§ μμ΅λλ€. λ°λΌμ μΌλ° λ¬Έμμ΄ λ΄μμ μ€λ°κΏ λ±μ 곡백μ νννκΈ° μν΄μλ μ΄μ€μΌμ΄ν μνμ€λ₯Ό μ¬μ©ν΄μΌ ν©λλ€(μ΄ κ²½μ°μλ \nμ μ¬μ©νκ² λ κ²μ λλ€).
λ§μΌ μΌλ° λ¬Έμμ΄μ ν΅νμ¬ μ€λ°κΏκ³Ό λ€μ¬μ°κΈ°κ° μ μ©λ HTML λ¬Έμμ΄μ νννκ³ μ νλ€λ©΄ μλμ κ°μ κ²μ λλ€.
var template = '<ul>\n\t<li><a href="#">Home</a></li>\n</ul>';
console.log(template);
νμ§λ§ ν νλ¦Ώ 리ν°λ΄μ ν΅ν΄μλ μ΄μ€μΌμ΄ν μνμ€λ₯Ό μ¬μ©νμ§ μμλ μ€λ°κΏμ΄ νμ©λλ©° λͺ¨λ 곡백λ κ·Έλλ‘ μ μ©λ©λλ€. λ°λΌμ μλ μ½λμ μ μ½λλ λμΌν κ²°κ³Όκ°μ κ°μ§λλ€.
var template = `<ul>
<li><a href="#">Home</a></li>
</ul>`
console.log(template);
6.3.2 ννμ μ½μ
λ¬Έμμ΄μ λ¬Έμμ΄ μ°μ°μ +λ₯Ό μ¬μ©νμ¬ μ°κ²°ν μ μμ΅λλ€. + μ°μ°μλ νΌμ°μ°μ μ€ νλ μ΄μμ΄ λ¬Έμμ΄μΈ κ²½μ° λ¬Έμμ΄ μ°κ²° μ°μ°μλ λμν©λλ€(μ΄μΈμλ λ§μ μ°μ°μλ‘ λμ).
νμ§λ§ μ΄ κ²½μ° ν νλ¦Ώ 리ν°λ΄ λ΄μμ ννμ μ½μ μ ν΅νμ¬ λμ± κ°λ¨ν λ¬Έμμ΄μ μ½μ ν μ μμ΅λλ€. μ΄λ₯Ό ν΅νμ¬ λ¬Έμμ΄ μ°μ°μλ₯Ό μ΄μ©νλ κ²λ³΄λ€ κ°λ μ± λκ³ κ°νΈνκ² λ¬Έμμ΄μ μ‘°μν μ μμ΅λλ€.
var first = 'Jiwon';
var last = 'Choi';
// λ¬Έμμ΄ μ°μ°μ +λ₯Ό μ¬μ©ν κ²½μ°
console.log('μ μ΄λ¦μ ' + first + ' ' + last + 'μ
λλ€.'); // μ μ΄λ¦μ Jiwon Choiμ
λλ€.
// ν
νλ¦Ώ 리ν°λ΄μ ννμ μ½μ
μ μ΄μ©ν κ²½μ°
console.log(`μ μ΄λ¦μ ${first} ${last}μ
λλ€.`); // μ μ΄λ¦μ Jiwon Choiμ
λλ€.
ννμ μ½μ μ κ²½μ° ν νλ¦Ώ 리ν°λ΄ λ΄μμλ§ λμνκΈ° λλ¬Έμ μΌλ° λ¬Έμμ΄μμ μ¬μ©ν μ μμμ μ μν΄μΌ ν©λλ€(μ΄ κ²½μ°μλ ννμ μ½μ μ λ λ¬Έμμ΄λ‘ μ·¨κΈ).
6.4 λΆλ¦¬μΈ νμ
λ Όλ¦¬μ μ°Έ, κ±°μ§μ νλλ΄λ νμ μΌλ‘ trueμ falseλ§ μ‘΄μ¬ν©λλ€.
λΆλ¦¬μΈ νμ μ 쑰건μ μνμ¬ νλ‘κ·Έλ¨μ νλ¦μ μ μ΄νλ 쑰건문μμ μμ£Ό μ¬μ©λ©λλ€.
6.5 undefined νμ
undefined νμ μ κ°μ undefinedκ° μ μΌν©λλ€.
var ν€μλλ‘ μ μΈν λ³μλ μ묡μ μΌλ‘ undefinedλ‘ μ΄κΈ°νλ©λλ€. μ¦ λ³μ μ μΈ μ΄ν κ°μ ν λΉνμ§ μμ λ³μλ₯Ό μ°Έμ‘°ν λ undefinedκ° λ°νλ©λλ€.
μ΄μ²λΌ undefinedλ κ°λ°μκ° μλμ μΌλ‘ ν λΉνκΈ° μν κ°μ΄ μλ JS μμ§μ΄ λ³μλ₯Ό μ΄κΈ°νν λ μ¬μ©νλ κ°μ λλ€. λ°λΌμ λ§μΌ κ°λ°μκ° μλμ μΌλ‘ undefinedλΌλ κ°μ λ³μμ ν λΉνλ κ²μ μλͺ»λ νμλΌκ³ λ³Ό μ μμ£ .
κ·Έλ λ€λ©΄ λ³μμ κ°μ΄ μμμ λͺ μμ μΌλ‘ λνλ΄κΈ° μν΄μλ 무μμ μ¬μ©ν΄μΌ ν κΉμ? μ΄λ¬ν μꡬλ₯Ό μΆ©μ‘±νκΈ° μνμ¬ undefined λΏλ§ μλ nullμ΄λΌλ νμ λ μ‘΄μ¬ν©λλ€.
6.6 null νμ
null νμ μ κ°λ nullμ΄ μ μΌν©λλ€. λν JSμμλ λμλ¬Έμλ₯Ό ꡬλ³νκΈ° λλ¬Έμ null μ΄μΈ Null, NULL λ±μ κ°μ μλ³μλ‘ μΈμλλ―λ‘ μ‘°μ¬ν΄μΌ ν©λλ€.
νλ‘κ·Έλλ° μΈμ΄μμ nullμ λ³μμ κ°μ΄ μμμ μλμ μΌλ‘ λͺ μν λ, μλμ λΆμ¬λ₯Ό λνλΌ λ μ¬μ©ν©λλ€. λ³μμ nullμ ν λΉνλ κ²μ λ³μκ° μ΄μ μ μ°Έμ‘°νλ κ°μ λ μ΄μ μ°Έμ‘°νμ§ μκ² λ€λ κ²μ μλ―Έν©λλ€.
λν, ν¨μκ° μ ν¨ν κ°μ λ°νν μ μλ κ²½μ°μλ nullμ λ°ννκΈ°λ ν©λλ€. μ΄λ₯Ό ν λ©΄ document.querySelector λ©μλλ₯Ό μ¬μ©νμ λ 쑰건μ λΆν©νλ HTML μμκ° μλ κ²½μ°μλ nullμ΄ λ°νλ©λλ€.
6.7 μ¬λ² νμ
μ¬λ²μ ES6μμ μΆκ°λ 7λ²μ¨° νμ μΌλ‘ λ³κ²½ λΆκ°λ₯ν μμ νμ μ λλ€. μ¬λ²μ λ€λ₯Έ κ°κ³Ό μ€λ³΅λμ§ μλ μ μΌλ¬΄μ΄ν κ°μΌλ‘, μ£Όλ‘ μ΄λ¦ μΆ©λ μνμ΄ μλ κ°μ²΄μ μ μΌν νλ‘νΌν° ν€λ₯Ό λ§λ€κΈ° μνμ¬ μ¬μ©ν©λλ€.
μ¬λ² μ΄μΈμ μμ κ°μ 리ν°λ΄μ ν΅νμ¬ μμ±νμ§λ§ μ¬λ²μ Symbol ν¨μλ₯Ό νΈμΆνμ¬ μμ±νλ€λ νΉμ§μ΄ μμ΅λλ€. μ΄λ μμ±λ μ¬λ² κ°μ μΈλΆμ λ ΈμΆλμ§ μμΌλ©° λ€λ₯Έ κ°κ³Ό μ€λ³΅λμ§ μμ΅λλ€(μ μΌλ¬΄μ΄).
6.8 κ°μ²΄ νμ
JSμ νμ (λ°μ΄ν° νμ )μ ν¬κ² μμ νμ κ³Ό κ°μ²΄ νμ μΌλ‘ λΆλ₯λ©λλ€. μ΄λ μμ νμ κ³Ό κ°μ²΄ νμ μ λΏλ¦¬λΆν° λ€λ¦μ μλ―Έν©λλ€. μμ§ κ°μ²΄μ λνμ¬ λ€λ₯Έ ν¬μ€ν μ΄ μμΌλ―λ‘ ν΄λΉ λΆλΆμ΄ μ λ‘λ λλ©΄ νλ¨μ λ§ν¬λ₯Ό κ±Έμ΄λλλ‘ νκ² μ΅λλ€.
μ€μν κ²μ μλ°μ€ν¬λ¦½νΈλ κ°μ²΄ κΈ°λ°μ μΈμ΄μ΄λ©°, ꡬμ±νκ³ μλ κ±°μ λͺ¨λ κ²μ΄ κ°μ²΄μ λλ€. μμ λμ¨ 6κ°μ§μ λ°μ΄ν° νμ μ΄μΈμ κ°μ λͺ¨λ κ°μ²΄ νμ μ λλ€.
6.9 λ°μ΄ν° νμ μ νμμ±
κ·Έλ λ€λ©΄ λ°μ΄ν° νμ μ μ νμν κ²μΌκΉμ? λ°μ΄ν° νμ μ νμμ±μ κ°λ΅νκ² μ 리νλ©΄ μλμ κ°μ΅λλ€.
- λ°μ΄ν° νμ μ μν λ©λͺ¨λ¦¬ 곡κ°μ ν보μ μ°Έμ‘°
- λ°μ΄ν° νμ μ μν κ°μ ν΄μ
μ°λ¦¬κ° fooλΌλ ν¨μλ₯Ό μ μ₯ν λ, μ«μ 1μ μ μ₯ν λ νμν λ©λͺ¨λ¦¬μ ν¬κΈ°λ λ€λ₯Ό κ²μ λλ€. κ·Έλ¦¬κ³ λ©λͺ¨λ¦¬μμ μ½μ λμλ μμ μ§μ λΆν° μΌλ§λ μ½μ΄μμΌ ν μ§λ 무μμ μ μ₯ν΄λμλμ λ°λΌ λ€λ₯Ό κ²μ λλ€. μ΄λ₯Ό κ·μ νλ κ²μ΄ λ°μ΄ν° νμ μ λλ€. λ°μ΄ν° νμ μ μ μ₯νκ³ μ°Έμ‘°ν λ μΌλ§νΌμ 곡κ°μ΄ νμνμ§λ₯Ό λͺ μν©λλ€. λν, λ©λͺ¨λ¦¬μ μ μ₯λ 2μ§μ κ°μ μ΄λ»κ² ν΄μν μ§μ λν κ²λ λ°μ΄ν° νμ μ΄ κ²°μ ν©λλ€.
6.10 λμ νμ΄ν
μλ°μ€ν¬λ¦½νΈμ λͺ¨λ κ°μ λ°μ΄ν° κ°μ κ°λλ€κ³ νμμ΅λλ€. κ·Έλ λ€λ©΄ λ³μλ μ΄λ»κ² λ°μ΄ν° νμ μ κ°μ§κΉμ?
Cλ Javaμ κ°μ μ μ νμ μΈμ΄λ λ³μλ₯Ό μ μΈν λ νμ μ μ¬μ μ μ μΈν΄μΌ ν©λλ€. μ΄κ²μ λͺ μμ νμ μ μΈμ΄λΌκ³ ν©λλ€.
μ΄λ¬ν νΉμ§μΌλ‘ μ μ νμ μΈμ΄λ λ³μμ νμ μ λ³κ²½ν μ μμΌλ©° λ€λ₯Έ νμ μ κ°μ ν λΉν μλ μμ΅λλ€.
νμ§λ§ μλ°μ€ν¬λ¦½νΈλ λμ νμ μΈμ΄λ‘ κ°μ ν λΉνλ μμ μμ λ³μμ νμ μ΄ κ²°μ λ©λλ€. κ·Έλμ typeof λ©μλλ₯Ό ν΅νμ¬ λ³μμ νμ μ λ°ννλ κ²μ λ μ νν λ§νλ©΄ ν΄λΉ λ³μμ ν λΉλμ΄ μλ κ°μ νμ μ λ°ννλ κ²μ λλ€.
λ³μλ νμ μ κ°μ§κΉ? λΌλ μ²μμ μ§λ¬ΈμΌλ‘ λμμμ λλ΅νμλ©΄ λ³μλ κΈ°λ³Έμ μΌλ‘ νμ μ κ°μ§ μμΌλ©° κ°μ΄ νμ μ κ°μ΅λλ€. λ°λΌμ λ³μλ ν λΉλμ΄ μλ κ°μ μνμ¬ νμ μ΄ λμ μΌλ‘ κ²°μ λλ€κ³ νννλ κ²μ΄ λ μ³λ€κ³ λ³Ό μ μμ΅λλ€.
μ΄λ¬ν λμ νμ μ λ³μμ μ΄λ€ λ°μ΄ν° κ°μ΄λΌλ μμ λ‘κ² ν λΉν μ μκ³ μ¬μ μ νμ μ μ§μ ν νμκ° μμ΄ νΈλ¦¬νλ€λ μ₯μ μ κ°μ§κ³ μμ΅λλ€. νμ§λ§ λͺ¨λ SW μν€ν μ²μλ νΈλ μ΄λ μ€νκ° μ‘΄μ¬νλ©° λμ νμ μΈμ΄μ κ²½μ°, λ§ κ·Έλλ‘ νμ μ΄ κ³ μ λμ΄ μμ§ μκ³ λ³ν μ μλ€λ λ¬Έμ κ° μμ΄ λ€μ μμ μ±μ΄ λ¨μ΄μ§λλ€.
μ΄λ¬ν μ΄μ λλ¬Έμ JSμμ λ³μλ₯Ό μ¬μ©ν λμ μ£Όμ μ¬νμ λͺ κ°μ§ μ μνλ©΄ λ€μκ³Ό κ°μ΅λλ€.
- λ³μλ κΌ νμν κ²½μ°μλ§ μ¬μ©νλ€.
- λ³μμ μ ν¨ λ²μ(μ€μ½ν)λ₯Ό μ΅λν μ’κ² λ§λ€μ΄μ λ³μμ λΆμμ©μ μ΅μ νλ€.
- μ μ λ³μλ μ΅λν μ¬μ©νμ§ μλλ‘ νλ€.
- λ³μ보λ€λ μμλ₯Ό μ¬μ©νμ¬ κ°μ λ³κ²½μ νΌνλ€.
- λ³μ μ΄λ¦μλ λͺ©μ μ΄λ μλ―Έλ₯Ό νμ ν μ μλλ‘ νλ€.