閉じる(Close)


クロゼ?


JavaScriptの性質で、関数の実行が終了した後に宣言変数の値にアクセスできます.
function addCounter() {
	var counter = ;
    
    return function() { // 함수 반환
    	return counter++;
    };
}
関数を変数またはパラメータとして上記のコードのJavaスクリプトの性質(一級オブジェクト)に渡すことができます.
console.log(addCounter());

f () {
	return counter++;
    }
addCounter()関数の役割は、addCounter()関数を実行するときに関数を返すことです.
function addCounter() {
  var counter = 0;

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

addCounter();
console.log(counter); // Uncaught ReferenceError: counter is not defined
実行時:
addCounter()関数運転終了時
counterという変数は再アクセスできなくなります.
関数で宣言された変数は、関数でのみ有効です!!!
function addCounter() {
	var counter = 0;
    
    return function() {
    	return counter++;
    };  
 }
 
 var add = addCounter();
 add(); // 0 counter = 0
 add(); // counter = 0 counter++ counter = 1
 add(); // counter = 1 counter++ counter = 2
addCounter()関数はaddという変数に含まれます.
add変数自体は関数のようなもので、技術用語で表されています.
「add変数は、addCounter()が返す関数を参照します.」

TIP


関数式プログラミング?
関数式プログラミングとは,特定の機能を実現するために,関数の内部論理が変化せずに複数の関数を組み合わせて結果を導出するプログラミングモードである.
function add(num1, num2) {
  return num1 + num2;
}

function curry(fn, a) {
  return function(b) {
    return fn(a, b);
  };
}

var add3 = curry(add, 3);
add3(4); // 7
ソース:[https://joshua1988.github.io/vue-camp/]