νλ‘κ·Έλλ¨Έμ€ λ°λΈμ½μ€μ πν©κ²©πνκ³ μ²μμΌλ‘ μμ±νλ TIL!
κΎΈμ€ν μμ±νμ!ππ»
곡λΆν λ΄μ© κ·Έλ¦¬κ³ μ΄λ €μ λ μ , λ μκ³ μΆμ μ , λλμ μ μμ£Όλ‘ μ 리ν κ²μ΄λ€.
μ΄λμ μ μΈνλλμ μκ΄μμ΄ μ μΈμ μ μΌ μλ‘
λμ΄μ¬λ €μ£Όλ κ²!
var λ³μ μ μΈκ³Ό ν¨μ μ μΈλ¬Έμμλ§ μΌμ΄λλ€.
λ§μ λμμ΄ λ λΈλ‘κ·Έ μΆμ²
[JavaScript] νΈμ΄μ€ν (Hoisting)μ΄λ
ν¨μκ° μ μΈλ νκ²½μ μ€μ½νλ₯Ό κΈ°μ΅
νμ¬ ν¨μκ° μ€μ½ν λ°μμ μ€νλ λ
μλ κΈ°μ΅ν μ€μ½νμ μ κ·Ό
ν μ μκ² λ§λλ λ¬Έλ²
function func() {
let i=1;
for (i=1; i<=5; i++) {
setTimeout(function() {
console.log(i);
}, i*500);
}
}
func(); // 5 5 5 5 5
λΆλͺ
보μλ μ½λμμλ λΆκ΅¬νκ³ λ! κ²°κ³Όλ₯Ό 1 2 3 4 5
λ‘ μμΈ‘νλ€. λλ λ°λ³΄λ€π€¦β μ½λ°±ν¨μλ ν΄λ‘μ μ΄κΈ° λλ¬Έμ μμ i κ°μ λ¬Όμ΄λ³΄κ³ μ΄λ―Έ iκ°μ 5κΉμ§ μ¦κ°νμκΈ° λλ¬Έμ 5κ° 5λ² μΆλ ₯λλ κ²μ΄λ€.
ν΄κ²° λ°©λ²
μ¦μ μ€ν ν¨μ(IIFE)
λ₯Ό μ΄μ©νμ¬ ν΄κ²°function func() {
for (var i=1; i<=5; i++) {
(function (num) {
setTimeout(function() {
console.log(num);
}, num*500);
})(i);
}
}
func(); // 1 2 3 4 5
μ¦μ μ€ν ν¨μ : μ μλμλ§μ μ¦κ°μ μΌλ‘ μ€νλλ ν¨μ
λΈλ‘ μ€μ½ν
λ‘ ν΄κ²° : let
μ μ¬μ©νλ©΄ forλ¬Έ λ΄μ μλ‘μ΄ μ€μ½νλ₯Ό κ°κΈ° λλ¬Έμ 맀 λ°λ³΅λ§λ€ μλ‘μ΄ iκ° μ μΈλκ³ λ°λ³΅μ΄ λλ μ΄νμ κ°μΌλ‘ μ΄κΈ°νλλ€.function func() {
for (let i=1; i<=5; i++) {
setTimeout(function() {
console.log(i);
}, i*500);
}
}
func(); // 1 2 3 4 5
πκ·Έλμ ν΄λ‘μ λ₯Ό μμ£Ό μ¬μ©νκ³ μλ λ!
λ°±μ€μμ node.jsλ‘ μ
λ ₯μ λ°μ λ μ¬μ©νλ μ½λμ΄λ€. μ΄μ νμ€ν μκ³ λλ 보μΈλ€.. ν΄λ‘μ κ°!
//λ°±μ€(BOJ) μ
λ ₯ λ°κΈ°
const fs = require('fs');
const stdin = fs.readFileSync('/dev/stdin').toString().split('\n');
const input = (() => {
let line = 0;
return () => stdin[line++];
})();
μ¦μ μ€ν ν¨μ
μ ν΄λ‘μ
λ₯Ό μ¬μ©νμ¬ input ν¨μλ₯Ό λ§λ€μκ³
μ
λ ₯κ°μ΄
10 10 3
13 2 5 11
1
2
μ΄λ κ² μ£Όμ΄μ§ κ²½μ° inputν¨μλ₯Ό μ€νν λλ§λ€ ν μ€ μ© λ°ννλλ‘ νλ μ½λμ΄λ€!
μ¬μ€ μ€λ 곡λΆν λ΄μ©λ€μ μμ μ ν¬μ€ν ν μ μ΄ μμλ€. κ·Έ λμλ λλ¦ μ΄ κ°λ λ€μ μ κ³ μ¬λ Έμλλ° μ΄ν΄λ₯Ό 100νλ‘ νμ§ λͺ»νμμλ μ°μ μμ±νλ κ² κ°λ€. λ€μ 볡μ΅νλ©΄μ μ΄ν΄νλκΉ μ΄μ κ°λ μ ν·κ°λ¦¬λ μΌμ μμ κ² κ°λ€.
μμ μ μ¬λ Έλ κ°λ
[FE/JavaScript] ν΄λ‘μ (Closure)
[FE/JavaScript] νΈμ΄μ€ν (Hoisting)
[FE/JavaScript] Scope(μ€μ½ν)
κ·Έλμ μ리λ λͺ¨λ₯΄κ³ μ¬μ©νλ ν΄λ‘μ ! λ΄κ° μ¬μ©νλ μ½λκ° μ μ΄λ κ² μ¬μ©ν΄μΌ νλμ§
, μ΄λ€ μλ¦¬λ‘ μ€νλλμ§
λ±μ νμ€ν μμ§ λͺ»ν μ± κ΅¬νμλ§ μ§μ€νλ κ²μ λ°μ±νλ€.
μμΌλ‘ λ―μ κ°λ
λ€λ λμ€κ² μ§λ§ μ΄ν΄ν λ κΉμ§ λκΉμ§ νκ³ λ€μ΄μΌ κ² λ€. νμ΄ν
π₯ νμ!!