Coding/JavaScript

2.3 함수 중급

미스터로즈 2019. 7. 17. 15:25

변수에 함수 저장하기

/////////////////////////////////////////////////

function hello(name){

  document.write(name+"님 환영합니다.");

}

hello("Rose");

var func = hello;

func("tulip");

///////////////////////////////////////////////

function hello1(){

  alert("hello.");

}

function hello2(){

  alert("안녕하세요");

}

function execute(func){

func();

}

execute(hello1);

execute(hello2);

///////////////////////////////////////////////

함수를 만드는 방식 

1. 리터럴방식

2. 일반적인 방식

3. 객체방식

//////////1번방식////////////////////////////////////

var hello = function(name){

  alert(name+"님 환영합니다.");

}

hello("Rose");

/////////2번 방식////////////////////////////////////

function hello(name){

  alert(name+"님 환영합니다.");

}

hello("Rose");

///////////3번 방식/////////////////////////////////

var hello = new Function("name", "alert(name+'님 환영합니다.');");

hello("Rose");

//////////////////////////////////////////////////////

익명함수

함수 리터럴 방식으로 만들어진 이름 없는 함수

함수를 재사용 하지 않는 경우 익명함수를 많이 씁니다.

//////////익명함수 사용하기 전////////////////////

function hello(){

  alert(" 미스터 로즈 입니다");

}

$("#btnStart").click(hello);

/////////////익명함수 사용한 후//////////////////

$("#btnStart").click(function(){

  alert(" 미스터 로즈 입니다.");

});

/////////////////////////////////////////////////////

- 사용자 정의 함수

사용자가 필요한 기능을 직접 만든 함수

 

-자바스크립트 코어 함수

자바스크립트가 기본적으로 제공하는 함수

 

콜백 함수

함수 내부의 처리 결과값을 함수 외부로 내보낼 때 사용 

 

return vs 콜백 함수

둘다 동일한 방법이지만, 단순한 처리는 리턴을 이용하는게 더 효율적이다.  

 

//////////////리턴을 사용하는 경우////////////////////////////

function sum(num1,num2){

  return num1+num2;

}

var result = sum(10,20);

document.write("두수의 합은 = "+ result+"입니다.");

 

//////////////콜백을 사용하는 경우///////////////////////

function sum(num1,num2,callback){

  var temp = num1 + num2;

  callback(temp);

}

function result(value){

  document.write("두 수의 합은 = " + value + "입니다.");
}

sum(10,20,result);

 

동기

함수가 호출된 후 끝날 때까지 다음 구문을 실행하지 않고 대기하고 있는 경우

 

alert("안녕하세요");

document.write("alert() 동작이 끝나야 이 내용은 실행됩니다.);

//위에 alert가 작업을 해야지 밑에 있는 코드가 작동을 하게 된다.

 

비동기

함수가 호출된 후 끝날 때까지 기다리지 않고 바로 다음 구문을 실행하는 경우

 

var count =1;

 

setInterval(function(){

  document.wrtie("2. count = " + count);

} , 3000);

 

document.write("1. ajax() 동작이 모두 끝나지 않았어도 바로 실행됩니다.");

 

콜백함수의 실무적용

1. 이벤트 리스너로 사용

$("#btnStart").click(function(){

  alert("클릭되었습니다.");

});

 

2. 타이머 실행 함수로 사용

setInterval(function(){

  alert("1초마다 한 번씩 실행되요");

}, 1000);

 

3. Ajax 결과값을 받을 때 사용

$.getr("http://www.webdongne.com/test.php", function(){

  alert("정상적으로 서버 통신이 이뤄졌습니다");

});

 

4. jQuery 애니메이션 완료

  $("#target").animate({

    left:100

    opacity:1

}, 2000,"easeOutQuint", function(){

  alert("애니메이션이 완료되었습니다.");

});

 

클로저 함수

함수 내부에 만든 지역변수가 사라지지 않고 계속해서 값을 유지하고 있는 상태

 

function 외부 함수(){

 var 변수A:

  function 내부 함수(){

    변수A 사용;

  }

}

////////////////일반적인 경우///////////////////////////////

function addCount(){

  var count=0;

  count++;

  return count;

}

 

document.write("1. count = " + addCount(),"<br>");

document.write("2. count = " + addCount(),"<br>");

document.write("3. count = " + addCount(),"<br>");

//결과

//1. count = 1

//2. count = 1

//3. count = 1

///////////////클로저 함수를 사용한 경우/////////////////////////

function createCounter(){

  var count = 0;

  function addCount(){

    count++;

    return count;

  }

  return addCount;

}

 

var counter = createCounter();

 

document.write("2. count = " + counter(),"<br>");

document.write("2. count = " + counter(),"<br>");

dcument.write("3. count = " + counter(),"<br>");

// 결과

// 1. count = 1

// 2. count = 2

// 3. count = 3

'Coding > JavaScript' 카테고리의 다른 글

3.2 Math 클래스  (0) 2019.07.19
3.1 타이머 함수  (0) 2019.07.18
2.2 함수의 기능  (0) 2019.07.17
2.1 함수 기초  (0) 2019.07.17
1.8 반복문 for  (0) 2019.07.16