Javascript/Node.js

[JavaScript] 함수지향

Frankie 2020. 2. 23. 13:32

함수는 자바스크립트의 가장 중요한 속성이다

 

유효범위는 범수의 수명을 의미하는데

var vscope = 'global'; // 전역변수

function fscope(){

         var vscope = 'local'; -> 지역변수 값을 바꾸고

         vscope = 'local'; -> 전역변수 값을 바꾼다

 

전역변수를 사용하려면 하나의 객체를 전역변수로 만들고 객체의 속성으로 변수를 관리해야 한다

var a = {}

a.calculator = {

}

-> 전역변수 사용 안하려면 익명함수를 호출하면 된다

(function(){

}

 

자바스크립트는 함수에 대한 유효범위만을 제공한다

for(var i =0; i<1; i++){

      var name = 'coding everybody';

}

alert(name);

자바스크립트의 지역변수는 함수에서만 유효하다

 

자바스크립트는 함수가 선언된 시점에서의 유효범위를 갖는데 이러한 유효범위의 방식을 정적 유효범위(static scoping), 혹은 렉시컬(lexical scoping)이라고 한다.

정적 유효 범위는 전역변수가 사용될 때가 아니라 정의될 때가 사용된다

 

자바스크립트에서 함수가 값이 될 수 있는데

자바스크립트에서 함수는 first-class citizen object(변수, 매개변수, 리턴값)로 사용된다

 

콜백은 어떤 함수가 수신하는 인자가 함수인 경우인데

var numbers = [20, 10, ''', 1];

var sortfunc = function(a, b){

     return b-a;

}

number.sort(sortfunc); //콜백 -> 함수의 인자로 함수 전달 sortfunc의 구현에 따라 sort의 동작 방법이 바뀐다

 

클로저 - 내부 함수가 외부 함수의 맥락(함수 구성)에 접근할 수 있는 것

function outter(){

     var title = 'coding everybody';

     return function(){

              alert(title);

     }

}

inner = outter(); //외부 함수가 소멸된 이후에도 내부 함수가 외부함수의 변수에 접근할 수 있다.

inner();

 

클로저는 자바스크립트가 private 변수를 사용하기에 가장 좋은 매커니즘이라고 할 수 있다.

 

arguments - 함수에는 변수에 담긴 숨겨진 유사 배열이 있는데 이 배열에는 함수를 호출할 때 입력한 인자가 담겨있다

 

function a(arg1){ //arg1 -> 매개변수

}

a(1) //1->인자

함수의 매개변수를 정의하지 않거나 수가 다르더라도 인자의 수를 마음대로 지정할 수 있다

 

매개변수의 수는

1. 함수.length - 함수에 정의된 인자의 수를 의미

2. arguments.length - 함수로 전달된 실제 인자의 수를 의미

 

함수의 호출

객체에 값이 있다면 속성

          함수가 있다면 메소드

o2 = {v1:10, v2:50, v3:100, v4:25}

function sum(){

      var _sum = 0

      for(name in this){

              _sum += this[name];

      }

      return _sum;

}

alert(sum.apply(o2)) //this가 o2가 된다

 

 

'Javascript > Node.js' 카테고리의 다른 글

Postman  (0) 2021.04.16
Express  (0) 2021.04.16
[Sequelize] Sequelize로 postgresql 다루기  (0) 2020.03.30
[JavaScript] 객체지향  (0) 2020.02.23
[JavaScript] 자바스크립트 기본  (0) 2020.02.22