16日目-2022.03.16


今日の勉強の内容


<テスト>


reduceを使用して、map、filterなどの各配列に機能を作成します。


ヒント
reduce内のコールバックがうまくいけばmap、filterなどの機能を持たせることができます.
に答える
1)フィルタと同じ機能にする
let arr = [];

let arr1 = arr.reduce((a,b,c) => {
    a.push(b);
  return a;
},[]);
2)mapにmapと同じ機能を持たせる
let arr = [];

let arr1 = arr.reduce((a,b,c) => {
	if (....) {
	a.push(~~);
	} else { 
	a.push(undefined);
}
	return a;
},[]);
どんな機能を加えても、結果が同じであれば、動作ごとに同じ機能があります.
(モダンJavaScriptチュートリアルを学ぶ)

1.call/applyとdecorator、転送


レコーダ-受信関数の引数としての動作を変更できる関数です.
function slow(x) {

  alert(`slow(${x})을/를 호출함`);
  return x;
}

function cachingDecorator(func) {
  let cache = new Map();

  return function(x) {
    if (cache.has(x)) {     // cache에 해당 키가 있으면
      return cache.get(x);  // 대응하는 값을 cache에서 읽어옵니다.
    }

    let result = func(x);   // 그렇지 않은 경우엔 func를 호출하고,

    cache.set(x, result);   // 그 결과를 캐싱(저장)합니다.
    return result; 
  };
}

slow = cachingDecorator(slow);

alert( slow(1) );                 // slow(1)이 저장되었습니다.
alert( "다시 호출: " + slow(1) );   // 동일한 결과

alert( slow(2) );                 // slow(2)가 저장되었습니다.
alert( "다시 호출: " + slow(2) );   // 윗줄과 동일한 결과

  • すべての関数に対してcachingDecoratorを呼び出すことができます.このとき、キャッシュ記述子が返されます.
    cachingDecorator(func)を呼び出すとrapper関数(x)が返されます.

  • 外から見ると、関数slowはRapperで包んだ後は以前と同じです.
    キャッシュを増やしただけ
  • Slow本文を修正するよりも、cachingDecoratorを修正するメリットは次のとおりです.
    1.任意の必要な関数で cachingDecoratorを適用できます.
    2.キャッシュ論理分離 slow 自身の複雑さは増加しません.
    3.必要であれば複数のデコーダを組み合わせて使用することも可能
    △第1課以降の内容はまだよく分からないので、明日までに勉強を続けてから記録するつもりです.

    学習サイト


    コアJavaScript

    今後の学習の方向性


    1.定義、基本例などで基本内容を熟知する
    2.テスト、サンプルなどを活用して内容を熟知し、深く理解してみる
    3.基礎書の内容を精読し、交差理解を試みる
    繰り返しの過程を理解の内容を増やします.
    速度が少し遅くても、自分で他の方法を探して、このような方法で適用して実行する理由を理解するのにもっと時間がかかります.
    上の内容は勉强の中で私が理解した内容で、いくつか间违った内容があるかもしれません.
    灰毒中発見時の修正