Javascript Koans(const, hoisting, closure, this, Shallow Copying&Deep Copying)
λνκΈ°(+) μ°μ°μλ μ«μλ³΄λ€ λ¬Έμμ΄μ΄ μ°μ μ λκΈ° λλ¬Έμ, μ«μνμ΄ λ¬Έμνμ λ§λλ©΄ λ¬ΈμνμΌλ‘ λ³ννμ¬ μ°μ°λλ€. (λ¬Έμ > μ«μ) (ex. 123 - '1' = 122
μ§λ§, '1' + true = '1true'
λ€.) μ΄μ²λΌ μλ°μ€ν¬λ¦½νΈμλ λ³λ λΆλΆλ€μ΄ μ‘΄μ¬νλ€. μ΅λν κ°μ νμ
λΌλ¦¬ μ°μ°νκ³ (μ격ν λμΉ μ°μ° ===
μ¬μ©), 쑰건문μ λΉκ΅ μ°μ°μ λͺ
μνμ.
const
λ₯Ό μ¬μ©νλ μ΄μ
const
λ³μμ νμ
μ΄ κ°μ²΄μΈ κ²½μ°, κ°μ²΄μ λν μ°Έμ‘° λ³κ²½μ λ§μ λΏμ΄κΈ° λλ¬Έμ ν λΉλ κ°μ²΄μ λ΄μ©(νλ‘νΌν° μΆκ°, μμ , νλ‘νΌν° κ° λ³κ²½)μ κ°λ₯νλ€.const
λ μλνμ§ μμ μ¬ν λΉμ λ§μμ£Όκ³ , μ μΈν κ°μ νμ
μ μ μ§νμ¬ μ€μλ₯Ό λ§λ λ° ν° λμμ΄ λλ€. (ex. μ¬ν λΉμΌλ‘ κ°μ²΄ -> λ¬Έμμ΄λ‘ λ³κ²½λλ κ±Έ λ§μ)let
μ μ΄λ€. λ³μμ μ€μ½νλ μ΅λν μ’κ² λ§λ λ€.μλ°μ€ν¬λ¦½νΈμμλ ν¨μλ κ°μ²΄λ€. λ°λΌμ λ€λ₯Έ κ°μ²΄μ λ§μ°¬κ°μ§λ‘ λκΈ°κ±°λ ν λΉν μ μλ€. ν¨μλ₯Ό κ°μ²΄ νλ‘νΌν°μ ν λΉν μλ μλ€. κ°μ²΄μ μμ± κ°μΌλ‘ λ΄κ²¨μ§ ν¨μλ₯Ό λ©μλ(method)λΌκ³ λΆλ₯Έλ€.
ν¨μννμ: λ³μκ°μ ν¨μ ννμ λ΄μ λμ νν. ν΄λ‘μ νΉμ μ½λ°±(λ€λ₯Έ ν¨μμ μΈμλ‘ λκΉ)μΌλ‘ μ¬μ©ν μ μλ€.
νΈμ΄μ€ν (Hoisting)
var
λ³μ μ μΈκ³Ό ν¨μμ μΈλ¬Έμμλ§ νΈμ΄μ€ν
μ΄ μΌμ΄λλ€. var
λ³μ μ μΈλ§ μλ‘ λμ΄μ¬λ €μ§λ©°, ν λΉμ λμ΄μ¬λ €μ§μ§ μλλ€. ν¨μλ μ μ²΄κ° λμ΄μ¬λ €μ§λ€. νμ§λ§, νΌλμ λ°©μ§νλ λͺ
μμ μΈ μ½λλ₯Ό μν΄ νΈμ΄μ€ν
μ λν΄μλ κ°λ
λ§ μμ§νκ³ μ€ν μμλλ‘ μ½λλ₯Ό μ§μ.ν©ν 리 ν¨μ(factory function)
new
λλ this
μμ΄ μμλ‘ λ³΅μ‘ν κ°μ²΄λ₯Ό μμ±νκΈ° μν΄ ν©ν 리 ν¨μλ₯Ό μ‘°ν©ν μ μλ€.namespace pattern
private variables: λ³μλ₯Ό μ무λ μμ ν μ μκ² ν¨μ μμ λ κ². μΈλΆμμ λ³μλ₯Ό μ§μ μμ ν μ μκ³ , ν¨μ νΈμΆμ ν΅ν΄μλ§ μ κ·Όμ΄ κ°λ₯νλ€.
μ μκ°μ²΄
μμ±μμ new
new funName()
μΌλ‘ μ¬μ©νλ©°, λΉμ΄ μλ κ°μ²΄(μ΄λ¦μ ν¨μλͺ
κ³Ό λμΌ)λ₯Ό λ§λ€κ³ λ°ννλ€.function Person(name){
this.name = name;
this.introduce = function(){
return 'My name is '+this.name;
}
}
const p1 = new Person('egoing');
const p2 = new Person('leezche');
this
κ°μ²΄μ κΉμ 볡μ¬μ μμ 볡μ¬
μμ 볡μ¬(Shallow Copying)
arr.slice([begin[, end]])
Object.assign()
κΉμ 볡μ¬(Deep Copying)
JSON.stringify
λ μ
λ ₯ κ°μΌλ‘ λμ΄μ¨ λ°μ΄ν°λ₯Ό λ¬Έμλ‘ λ³νμμΌμ£Όλ λ©μλμ΄λ©°, JSON.parse
λ μ΄λ κ² λ³νλ λ¬Έμλ₯Ό λ€μ μλ κ°μ²΄λ‘ λλλ €μ£Όλ μν μ νλ€.JSON.parse(JSON.stringify(obj))
μ°Έκ³
CSS Selector
HTML μμμ νΉμ λΆλΆμ μ€νμΌμ μ μ©νκ³ μ ν λ μ λ ν°κ° μ¬μ©λλ€.
μ 체 μ λ ν°
* { }
Tag μ λ ν°
h1 { }
div { }
section, h1 { }
: μΌνλ λ€μ€μΌλ‘ μ ννλ€.ID μ λ ν°
#only { }
class μ λ ν°
.widget { }
.center { }
attribute μ λ ν°(μΈμΈ νμ μμ)
a[href] { }
: a μμ μ€ herf μμ±μ κ°λ μμ μ νp[id="only"] { }
: p μμ μ€ id μμ± κ°μ "only"λ₯Ό κ°λ μμ μ νp[class~="out"] { }
: p μμ μ€ class μμ± κ°μ "out"μ λ¨μ΄λ‘ ν¬ν¨νλ μμ(곡백μΌλ‘ λΆλ¦¬λμ΄μΌ ν¨)p[class|="out"] { }
: p μμ μ€ class μμ± κ°μ΄ "out"κ³Ό μΌμΉνκ±°λ "out"μΌλ‘ μμνλ μμ μ νsection[id^="sect]" { }
: section μμ μ€ id μμ± κ°μ΄ "sect"λ‘ μμνλ μμ μ νdiv[class$="2"]
: div μμ μ€ class μμ± κ°μ΄ "2"λ‘ λλλ μμ μ νdiv[class*="w"] { }
: div μμ μ€ class μμ± κ°μ "w"λ₯Ό ν¬ν¨νλ μμ μ ννμ μ λ ν°
header h1 { }
: header μλ μλ h1 νκ·Έλ₯Ό λͺ¨λ μ ν (h1 μλ μμ ν¬ν¨)μμ μ λ ν°
header > p { }
: header λ°λ‘ μλ μλ p νκ·Έλ§μ μ ν (p μλ μμ λ―Έν¬ν¨)μΈμ νμ μ λ ν°
section + p { }
: κ°μ λΆλͺ¨λ₯Ό κ°μ§κ³ , section λ°λ‘ λ€μ μ€λ pλ§ μ ν νμ μ λ ν°
section ~ p { }
: κ°μ λΆλͺ¨λ₯Ό κ°μ§κ³ , section λ€μ μ€λ pλ₯Ό λͺ¨λ μ ν (μΈμ νμ§ μμλ μ νν¨)κ°μ ν΄λμ€
a:link { }
: λ°©λ¬Έ μ λ§ν¬a:visited { }
: λ°©λ¬Έ ν λ§ν¬a:hover { }
: λ§μ°μ€ μ€λ²νμ λa:active { }
: λ§μ°μ€λ₯Ό ν΄λ¦ν λa:focus { }
: μμμ μ΄μ μ΄ λ§μΆ°μ§ λμμ μν μ λ ν°
input:checked + span { }
input:enabled + span { }
input:disabled + span { }
ꡬ쑰 κ°μ ν΄λμ€ μ λ ν°(μΈμΈ νμ μμ)
p:first-child { }
ul > li:last-child { }
ul > li:nth-child(2n) { }
section > p:nth-child(2n+1) { }
ul > li:first-child { }
li:last-child { }
div > div:nth-child(4) { }
div:nth-last-child(2) { }
section > p:nth-last-child(2n + 1) { }
p:first-of-type { }
div:last-of-type { }
ul:nth-of-type(2) { }
p:nth-last-of-type(1) { }
λΆμ μ λ ν°
input:not([type="password"]) { }
div:not(:nth-of-type(2)) { }
μ ν©μ± νμΈ μ λ ν°
input[type="text"]:valid { }
input[type="text"]:invalid { }
μμ΄ μ€λ ₯μ λΆμ‘±ν¨μ λΌμ λ¦¬κ² λλΌλ μ€. μ λ§ μ΄λ ΅λ€... νκ³ λ€μ΄κ°μλ‘ μ΄λ ΅λ€... μ€μ λ‘ λ΄κ° ꡬνμ ν΄λ³Έ κ²λ μλλ κ°λ μ μκ² λλ° μ΄λ»κ² μ°μ΄λμ§ κ°μ΄ μ ν μ μ‘νλ€. νΉν λ€μμ€νμ΄μ±μ μ΄λ»κ² μ°μ΄λμ§ λͺ¨λ₯΄κ² λ 건 λ¬Όλ‘ μ΄λ©° μμ μ½λλ₯Ό λ΄λ λͺ¨λ₯΄κ² κ³ , ν©ν 리 ν¨μλ μ°λ λ²μ μκ² λλ° μ΄λ€ λ μ°μ΄λμ§ μ κ°μ΄ μ μ¨λ€. μ‘°κΈ λ§λ§ν λ°€μ΄λ€. νΌμ νλ€λ³΄λ μμ² λΉλ₯거리기λ νκ³ . μ μ 차리μ. π€