Skip to content

Latest commit

Β 

History

History
179 lines (135 loc) Β· 3.3 KB

ch24-문제.md

File metadata and controls

179 lines (135 loc) Β· 3.3 KB

Chapter24 ν΄λ‘œμ €

πŸ“Œλ¬Έμ œ1

O, Xλ₯Ό κ³ λ₯΄μ‹œμ˜€.

1. μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 ν•¨μˆ˜λ₯Ό μ–΄λ””μ„œ ν˜ΈμΆœν–ˆλŠ”μ§€κ°€ μ•„λ‹Œ ν•¨μˆ˜λ₯Ό 어디에 μ •μ˜ν–ˆλŠ”μ§€μ— 따라 μƒμœ„ μŠ€μ½”ν”„λ₯Ό κ²°μ •ν•œλ‹€. 
2. ν•¨μˆ˜κ°€ μ’…λ£Œλ  λ•Œ μ‹€ν–‰μ»¨ν…μŠ€νŠΈλŠ” μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μŠ€νƒμ—μ„œ 제거되고, κ΄€λ ¨ λ ‰μ‹œμ»¬ ν™˜κ²½κΉŒμ§€ μ œκ±°λœλ‹€. 
3. λͺ¨λ“  ν•¨μˆ˜λŠ” ν΄λ‘œμ €κ°€ 될 수 μžˆμ§€λ§Œ, λͺ¨λ“  ν•¨μˆ˜κ°€ ν΄λ‘œμ €λŠ” μ•„λ‹ˆλ‹€.

λ‹΅μ•ˆ μž‘μ„±


πŸ“Œλ¬Έμ œ2

ν΄λ‘œμ €λ₯Ό μ™œ μ‚¬μš©ν•˜λŠ”μ§€ μ΄μœ μ™€ μ‚¬μš©ν–ˆμ„ λ•Œ 단점을 μ„œμˆ ν•˜μ‹œμ˜€.

λ‹΅μ•ˆ μž‘μ„±


πŸ“Œλ¬Έμ œ3

λ‹€μŒ μ½”λ“œλ₯Ό 보고, μ‹€ν–‰ κ²°κ³Όλ₯Ό μ΄μ•ΌκΈ°ν•˜κ³  ν΄λ‘œμ €λ₯Ό 톡해 μˆ˜μ •ν•΄μ„œ μ˜λ„ν•œ λŒ€λ‘œ λ™μž‘ν•˜λ„λ‘ μ„œμˆ ν•˜μ‹œμ˜€.

let i = 0;
for(i = 0; i < 5; i++){
	setTimeout(function(){ 
		console.log(i)
	}, i * 1000);
}

λ‹΅μ•ˆ μž‘μ„±


πŸ“Œλ¬Έμ œ4

μ•„λž˜μ™€ 같은 μ½”λ“œμ—μ„œ outerν•¨μˆ˜μ˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ μ’…λ£Œλ˜μ—ˆμŒμ—λ„ innerμ—μ„œ μ™ΈλΆ€ν•¨μˆ˜(outer) μ°Έμ‘°κ°€ κ°€λŠ₯ν•œ 이유λ₯Ό μž‘μ„±ν•˜μ‹œμ˜€.

function outer() {
   let x = 0;

   function inner() {
      return x;
   }
   
   return inner;
}

const printX = outer();

λ‹΅μ•ˆ μž‘μ„±


πŸ“Œλ¬Έμ œ5

μ•„λž˜ μ½”λ“œμ˜ μ‹€ν–‰ κ²°κ³Όλ₯Ό μž‘μ„±ν•˜μ‹œκ³ , ν΄λ‘œμ €λ₯Ό λ§Œλ“œλŠ” κ΄€μ μ—μ„œ 문제점이 μžˆλ‹€λ©΄ μž‘μ„±ν•˜μ‹œμ˜€.

const Counter = (function () {
   function Counter() {
      this.num = 0;
   }

   Counter.prototype.increase = function () {
      return ++this.num;
   };

   Counter.prototype.decrease = function () {
      return --this.num;
   };

   return Counter;
}());

const counter = new Counter();
console.log(counter.increase()); // (1)
console.log(counter.increase()); // (2)
console.log(counter.decrease()); // (3)
console.log(counter.decrease()); // (4)

λ‹΅μ•ˆ μž‘μ„±


πŸ“Œλ¬Έμ œ6

λ‹€μŒ μ½”λ“œμ˜ 좜λ ₯값을 μ˜ˆμƒν•˜κ³  이유λ₯Ό μž‘μ„±ν•˜μ‹œμ˜€. λ§Œμ•½ 좜λ ₯값이 0 1 2이 μ•„λ‹ˆλΌλ©΄ κ°„λ‹¨ν•˜κ²Œ κ°œμ„ λ°©λ²•μ„ μž‘μ„±ν•˜μ‹œμ˜€.

var funcs = [];

for (var i = 0; i < 3; i++) {
   funcs[i] = function () { return i; };
}

for (var j = 0; j < 3; j++) {
   console.log(funcs[j]());
}

λ‹΅μ•ˆ μž‘μ„±


πŸ“Œλ¬Έμ œ7

λ‹€μŒ λ¬Έμž₯의 true or falseλ₯Ό νŒλ‹¨ν•˜μ„Έμš”.

(1) ν΄λ‘œμ €λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ 고유의 κ°œλ…μ΄λ‹€.
(2) ν΄λ‘œμ €λŠ” μ€‘μ²©ν•¨μˆ˜κ°€ μƒμœ„ μŠ€μ½”ν”„μ˜ μ‹λ³„μžλ₯Ό μ°Έμ‘°ν•˜κ³  있고 μ€‘μ²©ν•¨μˆ˜κ°€ μ™ΈλΆ€ν•¨μˆ˜λ³΄λ‹€ 더 였래 μœ μ§€λ˜λŠ” κ²½μš°μ— ν•œμ •ν•˜λŠ” 것이 μΌλ°˜μ μ΄λ‹€.
(3) μžλ°”μŠ€ν¬λ¦½νŠΈ 객체의 λͺ¨λ“  ν”„λ‘œνΌν‹°μ™€ λ©”μ„œλ“œλŠ” 기본적으둜 publicν•˜λ‹€.

λ‹΅μ•ˆ μž‘μ„±

(1)
(2)
(3)

πŸ“Œλ¬Έμ œ8

λ‹€μŒ μ½”λ“œλ₯Ό μ°Έκ³ ν•˜μ—¬ ν΄λ‘œμ €μ˜ ν™œμš©μ— λŒ€ν•΄ κ°„λ‹¨νžˆ μ„œμˆ ν•˜μ„Έμš”.

const increase = (function () {
  let num = 0;

  return function () {
    return ++num;
  };
})();

increase();
increase();

λ‹΅μ•ˆ μž‘μ„±


πŸ“Œλ¬Έμ œ9

λ‹€μŒ μ½”λ“œμ˜ μ‹€ν–‰ κ²°κ³Όλ₯Ό μ˜ˆμΈ‘ν•˜μ„Έμš”.

var funcs = [];

for (var i = 0; i < 3; i++) {
  funcs[i] = function () {
    return i;
  };
}

for (var j = 0; j < funcs.length; j++) {
  console.log(funcs[j]());
}

λ‹΅μ•ˆ μž‘μ„±