Javascript

  • Function ํƒ€์ž…

    • ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด์ด๋‹ค.
    • ์˜ค๋ฒ„๋กœ๋”ฉ์€ ์—†๋‹ค.
    • ๋งˆ์ง€๋ง‰์— ์ •์˜ํ•œ ํ•จ์ˆ˜๊ฐ€ ์ด์ „์— ์ •์˜ํ•œ ํ•จ์ˆ˜๋ฅผ ๋ฎ์–ด์”€์„ ์‰ฝ๊ฒŒ ์ดํ•ด ํ•  ์ˆ˜ ์žˆ๋‹ค.
    function addSomeNumber(num){ // 1๋ฒˆ
      return num + 100;
    }
    function addSomeNumber(num){ // 2๋ฒˆ
      return num + 200;
    }
    var result = addSomeNumber(100); // 300  2๋ฒˆ ํ˜ธ์ถœ
  • ํ•จ์ˆ˜ ์„ ์–ธ vs ํ•จ์ˆ˜ ํ‘œํ˜„์‹ (Hoisting)

    • ํ•จ์ˆ˜ ์„ ์–ธ์€ ์–ด๋–ค ์ฝ”๋“œ๋„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์ด๋ฏธ ๋ชจ๋“  EC์—์„œ ์ ‘๊ทผํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

    Hoisting์ด๋ž€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์ฝ”๋“œ๋ฅผ ํ‰๊ฐ€ํ•  ๋•Œ ์ œ์ผ ๋จผ์ € ํ•จ์ˆ˜ ์„ ์–ธ์„ ์ฐพ์€ ๋‹ค์Œ ์ด๋“ค์„ ๋งจ ์œ„๋กœ ์˜ฌ๋ฆฌ๋Š” ๊ณผ์ •์„ ๋งํ•œ๋‹ค.

    • ํ•จ์ˆ˜ ํ‘œํ˜„์‹์€ ์ฝ”๋“œ ์‹คํ–‰์ด ํ•ด๋‹น ์ค„๊นŒ์ง€ ์ง„ํ–‰ํ•˜๊ธฐ ์ „์—๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
alert(sum(10,10));
function sum(num1,num2){ // ํ•จ์ˆ˜ ์„ ์–ธ
  return num1 + num2;
}
alert(sum(10,10)); // error ํ•จ์ˆ˜๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค.
var sum = function (num1,num2){ // ํ•จ์ˆ˜ ํ‘œํ˜„์‹
  return num1 + num2;
}
  • ๊ฐ’์ฒ˜๋Ÿผ ์“ฐ๋Š” ํ•จ์ˆ˜

// someFunction : ํ•จ์ˆ˜๋งค๊ฐœ๋ณ€์ˆ˜,  someArgument : ์ฝœ๋ฐฑ ํ•จ์ˆ˜์— ๋„˜๊ธธ ๊ฐ’
function callSomeFunction(someFunction, someArgument){
  return someFunction(someArgument);
}
function add10(num){
  return num + 10;
}
var result = callSomeFunction(add10,10);
alert(result); // 20
 
function getGreeting(name){
  return "Hello " + name;
}
var result2 = callSomeFunction(getGreeting,"NESOY");
alert(result2); // Hello NESOY
  • ํ•จ์ˆ˜์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ

    • ํ•จ์ˆ˜ ๋‚ด๋ถ€์—๋Š” argument, this ๊ฐ์ฒด๊ฐ€ ์กด์žฌ
    • argument์˜ property์— callee : ๊ฐ์ฒด์˜ ์†Œ์œ ์ž์ธ ํ•จ์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ
    • caller , callee์„ ํ†ตํ•ด ํ•จ์ˆ˜์™€ ์ด๋ฆ„ ์‚ฌ์ด์˜ ์˜์กด์„ฑ์„ ์ œ๊ฑฐ
function factorial(num){
  if ( num <= 1){
    return 1;
  } else {
    return num * argument.callee(num-1);
  }
}
  • ํ•จ์ˆ˜์˜ ํ”„๋กœํผํ‹ฐ์™€ Method

    • ๋ชจ๋“  ํ•จ์ˆ˜์— length, prototype์ด ์กด์žฌ
    • length : ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐฏ์ˆ˜
    • prototype : ๋ชจ๋“  ์ฐธ์กฐ ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ณณ
    • apply(), call() ํ•จ์ˆ˜ ์กด์žฌ
  function sum(num1, num2){
    return num1 + num2;
  }
  function callSum1(num1, num2){
    return sum.apply(this, arguments);  // arguments ๊ฐ์ฒด๋ฅผ ๋„˜๊ธด๋‹ค.
  }
  function callSum2(num1, num2){ //ํ•˜๋‚˜ ํ•˜๋‚˜ ๋„˜๊ฒจ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
    return sum.call(this, num1, num2);
  }
  alert(callSum1(10,10)); // 10
  alert(callSum2(10,10)); // 10
 
  • bind()๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด this๋ฅผ ๊ต์ฒด ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋‚ด์žฅ๋œ ์‹ฑ๊ธ€ํ†ค ๊ฐ์ฒด

    • encodeURI(), encodeURIComponent()๋Š” ๋ธŒ๋ผ์šฐ์ €์— ์ „๋‹ฌํ•  URI๋ฅผ ์ธ์ฝ”๋“œํ•˜๋Š” ๋ฉ”์„œ๋“œ

    • ์œ ํšจํ•œ URI๋Š” ๊ณต๋ฐฑ๋ฌธ์ž ๋“ฑ์˜ ์ผ๋ถ€ ํŠน์ˆ˜ ๋ฌธ์ž๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์—†๋‹ค.

    • decodeURI(), decodeURIComponent()๋„ ์žˆ๋‹ค.

    ์ผ๋ฐ˜์ ์œผ๋กœ ๋งํ•ด ๋ฒ ์ด์Šค URI๋’ค์— ์ถ”๊ฐ€ํ•  ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์„ ์ธ์ฝ”๋“œํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋ฏ€๋กœ encodeURIComponent()๋ฅผ ํ›จ์”ฌ ์ž์ฃผ ์“ฐ๊ฒŒ ๋œ๋‹ค.

    • eval() : ๋ฌธ์ž์—ด์„ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์‹คํ–‰ํ•œ๋‹ค.
  • Math ๊ฐ์ฒด

    • min(), max()
    • random()

์ฐธ์กฐ